Инструмент анализатора передового опыта для Microsoft SQL Server 2000 — это инструмент управления базами данных, разработанный группой разработчиков Microsoft SQL Server, который позволяет определить, соответствует ли разработанная база данных передовым рекомендациям по эксплуатации и управлению SQL Server. Общепризнано, что эти рекомендации помогают повысить производительность и эффективность баз данных, а также упростить обслуживание приложений.
2. Начните использовать анализатор лучших практик SQL BPA.
После завершения установки появится документ Word с руководством пользователя анализатора лучших практик SQL Server. Основные шаги описаны ниже
. в SQL BPA
(2) Добавить анализ/обнаруженный экземпляр SQL Server
. Здесь необходимо ввести имя экземпляра SQL Server. Понятное имя используется для связи с группой Best Practice Group, созданной позже (просто оставьте его таким же, как имя экземпляра SQL Server). ). Значением по умолчанию для списка баз данных является *, что означает, что он содержит все базы данных текущего экземпляра SQL Server. Однако BPA пропустит обнаружение таких баз данных, как «master», «tempdb», «msdb», «pubs» и «northwind».
(3) Для управления группами лучших практик
сначала необходимо создать группу лучших практик, которая фактически объединяет некоторые правила и связывает их с экземпляром SQL Server, введенным ранее.
(4) Проанализируйте экземпляр SQL Server
и переместите ранее созданную группу передового опыта в список «Группы передового опыта для выполнения», чтобы его можно было выполнить в соответствии с ранее определенными правилами, и сгенерируйте отчет с предложениями и рекомендациями по улучшению.
3. Я думаю, что Правила, включенные в SQL BPA v1.0,
являются ключевым моментом, потому что только понимая эти рекомендации по передовому опыту работы и управления SQL Server, мы можем попытаться следовать этим Правилам при проектировании баз данных и написании сценариев T-SQL. повысить производительность и эффективность SQL Server и приложений.
Фактически, все правила находятся здесь (английская версия) file:///C:/Program%20Files/Microsoft%20SQL%20Server%20Best%20Practices%20Analyzer/html/RuleInformation.html#_Rule:_Explicit_Index_Creation . Обратите внимание, что я. использовать SQL BPA устанавливается по пути по умолчанию. Если вы измените путь установки, его здесь не будет.
Вот некоторые правила, которые меня интересуют:
(1)
Правила проектирования базы данных: таблицы без первичных ключей или ограничений уникальности.
Проверьте базу данных, чтобы убедиться, что для всех таблиц определен первичный ключ или для столбца определено ограничение уникальности.
Правило: Именование пользовательских объектов (именование пользовательских объектов)
обнаруживает пользовательские объекты, имена которых имеют префикс sp_, xp_ или fn_, чтобы избежать конфликтов имен со встроенными объектами SQL Server. Если SQL Server обнаружит, что хранимая процедура имеет префикс sp_, он сначала запросит хранимую процедуру в главной базе данных, что повлияет на производительность.
Поэтому необходимо соблюдать следующие рекомендации:
не используйте префикс sp_ для именования пользовательских хранимых процедур;
не используйте префикс xp_ для именования пользовательских расширенных хранимых процедур;
не используйте префикс fn_ для имен пользовательских функций
;.
Фактически, вы можете назвать его, используя такие префиксы, как usp_, uxp_ или ufn_, а u означает определяемый пользователем.
(2) Правило T-SQL
: список столбцов курсора FOR UPDATE
обнаруживает предложение FOR UPDATE в хранимых процедурах, функциях, представлениях и триггерах. Когда курсор определяет предложение FOR UPDATE, рекомендуется указывать явные столбцы столбцов. FOR UPDATE используется для определения обновляемых столбцов в курсоре. Если указано OF имя_столбца, разрешается изменять только перечисленные столбцы. Если список столбцов не указан, все столбцы могут быть обновлены, если не указана опция параллелизма READ_ONLY. SQL Server может оптимизировать операции на основе указанных столбцов.
Правило: Использование курсора
проверяет, правильно ли определена возможность обновления курсора в хранимых процедурах, функциях, представлениях и триггерах. О сбое будет сообщено в следующих ситуациях:
когда курсор не определяет предложение FOR UPDATE, но обновляется с помощью курсора,
когда курсор определяет предложение FOR UPDATE, но не обновляется с помощью курсора;
Однако обычно мы стараемся избегать использования курсора на стороне сервера, поскольку он занимает ресурсы памяти сервера и влияет на производительность SQL Server. Вместо курсора можно использовать вложенные запросы или операторы WHILE. Даже если вы используете курсор, вам следует обратить внимание на определение некоторых параметров курсора, например FAST_FORWARD.
Правило: явное создание индекса.
Для явного создания индекса рекомендуется использовать CLUSTERED или NONCLUSTERED.
Правило: Список столбцов INSERT
требует, чтобы при использовании INSERT список столбцов был указан явно, чтобы улучшить удобство сопровождения кода.
Правило: Конфигурация вложенных триггеров
обнаруживает триггеры, которые не срабатывают из-за проблем с настройкой вложенных триггеров. Это относительно редкое явление, поэтому я разместил его напрямую.
Если для параметра конфигурации «вложенные триггеры» установлено значение 0, любой триггер AFTER, определенный для таблиц/представлений, обновленных внутри триггера INSTEAD OF, не срабатывает. Это правило:
1) Проверяет значение параметра конфигурации и завершает работу, если оно не равно 0.
2) Сканирует все триггеры INSTEAD OF и генерирует список таблиц/представлений, являющихся целью DML, из триггера.
3) Проверяет, определены ли для каких-либо из идентифицированных целей DML триггеры AFTER.
4) Сообщает о несоответствии любого из них
.случай.
Правило: Опция NOCOUNT в триггерах
обнаруживает триггеры и гарантирует, что перед триггерами будет написано SET NOCOUNT ON.
SQL Server отправит сообщение «Готово» после выполнения каждого оператора. Эта информация может привести к непредвиденным последствиям для приложения, запускающего триггер. Поэтому хорошей привычкой при проектировании является добавление SET NOCOUNT ON перед триггером.
Конечно, рекомендуется добавлять SET NOCOUNT ON перед хранимыми процедурами и функциями. Таким образом, количество строк, на которые влияет выполнение серии команд SQL, не будет передаваться обратно клиенту, что снижает сетевой трафик и повышает производительность.
Правило: NULL Comparisons
обнаруживает сравнения на равенство или неравенство, включающие константы NULL в хранимых процедурах, функциях, представлениях и триггерах. Рекомендуется установить для ANSI_NULLS значение ON и использовать ключевое слово IS для сравнения констант NULL.
Правило: Результаты в триггерах
проверяет триггеры, чтобы убедиться, что триггеры не возвращают данные вызывающему объекту. Поэтому не рекомендуется использовать в триггерах следующие операторы:
оператор PRINT
SELECT (без присваивания или предложения INTO)
FETCH (без присваивания)
Правило: определение области транзакций
определяет диапазон транзакций в хранимых процедурах и триггерах. Рекомендуется, чтобы начало и конец транзакции находились в одной и той же структуре T-SQL.
Вообще говоря, постарайтесь максимально сузить область транзакции, чтобы не занимать много ресурсов и не влиять на производительность SQL Server.
Правило: SELECT *
обнаруживает использование SELECT * в хранимых процедурах, функциях, представлениях и триггерах. Хотя SELECT * более удобен, он снижает удобство сопровождения программы. Изменения в таблице или представлении могут привести к ошибкам или снижению производительности.
Поэтому рекомендуется явно указывать список полей после оператора SELECT.
Правило: SET Options
обнаруживает использование следующих операторов SET в хранимых процедурах и триггерах.
Рекомендуется установить следующие параметры в значение ON:
ANSI_NULLS.
ANSI_PADDING
ANSI_WARNINGS
АРИТАБОРТ
CONCAT_NULL_YIELDS_NULL
QUOTED_IDENTIFIER
рекомендует установить значение OFF для следующих параметров:
NUMERIC_ROUNDABOUT
Правило: Использование временных таблиц
обнаруживает использование временных таблиц в хранимых процедурах и триггерах. При создании временной таблицы необходимо создать команду CREATE INDEX, а после завершения использования временную таблицу необходимо освободить.
Поскольку временные таблицы будут генерировать большое количество дисковых операций ввода-вывода, вместо использования временных таблиц рекомендуется использовать переменные TABLE.
Однако из-за ограничений одновременного выполнения и обслуживания статистической информации временные таблицы по-прежнему рекомендуются, когда во временные таблицы вставляется большой объем данных.
Правило: TOP без ORDER BY
обнаруживает отсутствие операторов ORDER BY TOP в хранимых процедурах, функциях, представлениях и триггерах. При использовании оператора TOP рекомендуется указывать условия сортировки. В противном случае полученные результаты будут зависеть от плана выполнения SQL и приведут к неожиданному поведению.
Правило: Использование таблиц/представлений, соответствующих схеме,
определяет, указан ли владелец, когда на таблицы и представления ссылаются в хранимых процедурах, функциях, представлениях и триггерах. Хотя при ссылке на конкретный объект в SQL Server вам не нужно указывать сервер, базу данных и владельца (схему), а значит, вам не нужна заморочка с именем_сервера.имя_базы_данных.имя_владельца.***, но SQL Server рекомендует это его можно использовать в хранимой процедуре, функции. При ссылке на таблицу или представление в представлении или триггере лучше всего указать владельца таблицы или представления.
Когда SQL Server запрашивает объект таблицы/представления без указания владельца, он сначала запрашивает владельца по умолчанию, а затем dbo. Это приведет к дополнительным эксплуатационным расходам на продукт SQL Server. Указав владельца, вы можете повысить производительность SQL Server. (первый раз слышу это высказывание)
4. URL-адрес для загрузки справочных документов и соответствующих ресурсов
:
URL-адрес для загрузки видео: