Поделиться через


Контрольный список для анализа медленно выполняемых запросов

Запросы и обновления, время выполнения которых превышает ожидаемый период, могут быть вызваны разнообразными причинами. Медленно выполняемые запросы могут быть вызваны проблемами производительности сети или компьютера, на котором выполняется SQL Server. Медленно выполняемые запросы могут быть также вызваны физической структурой базы данных.

Некоторые наиболее распространенные причины медленного выполнения запросов и обновлений:

  • Медленная передача данных в сети.
  • Недостаточно памяти на серверном компьютере, или недостаточно памяти для SQL Server.
  • Не хватает полезных статистических показателей индексированных столбцов.
  • Устаревшие статистические данные индексированных столбцов.
  • Не хватает полезных индексов.
  • Не хватает полезных индексированных представлений.
  • Не хватает полезного расслоения данных.
  • Не хватает полезного секционирования.

Контрольный список для диагностики медленного выполнения запросов.

Если время выполнения запроса или обновления превышает ожидаемое время, задайте себе следующие вопросы, которые обращаются к перечисленным в предыдущем разделе причинам медленно выполняемых запросов.

ms177500.note(ru-ru,SQL.90).gifСовет:
Обратитесь к этому контрольному списку до того, как связаться со службой технической поддержки, чтобы сэкономить время.
  1. Связана ли проблема производительности с другими компонентами, помимо запросов? Например, не является ли причиной проблемы низкая скорость передачи данных по сети? Существуют ли также другие компоненты, которые могут вызвать снижение производительности или способствовать низкой производительности?
    Можно использовать системный монитор Windows для контроля производительности компонентов SQL Server и компонентов, не относящихся к приложению SQL Server. Дополнительные сведения см. в разделе Мониторинг использования ресурсов (системный монитор).
  2. Если проблема производительности связана с запросами, то какой запрос или набор запросов вызывает проблему?
    Сначала воспользуйтесь приложением SQL Server Profiler для идентификации медленного запроса или запросов. Дополнительные сведения см. в разделе Работа с приложением SQL Server Profiler.
    После определения медленно выполняющихся запросов можно далее проанализировать производительность запросов, создав план визуализации, который может быть текстом, XML или графическим представлением плана выполнения запросов, формируемого оптимизатором запросов. План визуализации можно создать при помощи параметров SET языка Transact-SQL, среды SQL Server Management Studio или приложения SQL Server Profiler.
    Сведения об использовании параметров SET языка Transact-SQL для отображения текста и планов выполнения XML см. в разделе Отображение планов выполнения с помощью параметров Showplan инструкции SET (Transact-SQL).
    Сведения об использовании среды SQL Server Management Studio для отображения графических планов выполнения см. в разделе Графическое отображение планов выполнения (SQL Server Management Studio).
    Сведения об использовании приложения SQL Server Profiler для отображения текста и планов выполнения XML см. в разделе Отображение плана выполнения с помощью классов событий приложения SQL Server Profiler.
    Сведения, собранные с помощью этих средств, позволяют определить, как выполняется запрос оптимизатором запросов SQL Server и какие индексы используются. Используя данные сведения, можно определить, можно ли улучшить производительность, переписав запрос, изменив индексы таблиц или изменив структуру базы данных. Дополнительные сведения см. в разделе Анализ запроса.
  3. Был ли оптимизирован запрос с помощью статистики?
    Статистика по распределению значений столбца автоматически создается на индексированных столбцах приложением SQL Server. Эти статистические показатели можно также создать вручную на неиндексированных столбцах в среде SQL Server Management Studio или с помощью инструкции CREATE STATISTICS, или автоматически, если параметр AUTO_CREATE_STATISTICS базы данных установлен в значение TRUE. Эти статистические показатели используются обработчиком запросов для определения оптимальной стратегии оценки запроса. Поддержка дополнительных статистических показателей на неиндексированных столбцах, включенных в операцию соединения, может улучшить производительность запроса. Дополнительные сведения см. в разделе Статистика индексов.
    Проконтролируйте запрос в приложении SQL Server Profiler или при помощи графического плана выполнения в среде SQL Server Management Studio, чтобы решить, достаточно ли статистических показателей в запросе. Дополнительные сведения см. в разделе Категория событий «Ошибки и предупреждения» (ядро СУБД).
  4. Не является ли статистика запроса устаревшей? Обновляется ли статистика автоматически?
    SQL Server автоматически создает и обновляет статистику запроса на индексированных столбцах (до тех пор пока включено автоматическое обновление статистики запроса). Кроме того, статистику на неиндексированных столбцах можно обновить вручную в среде SQL Server Management Studio, используя инструкцию UPDATE STATISTICS, или автоматически, если параметр AUTO_UPDATE_STATISTICS базы данных установлен в значение TRUE. Обновленные статистические показатели не зависят от данных даты и времени. Если не выполнялась операция UPDATE, то статистические показатели запроса считаются обновленными.
    Если не установлено автоматическое обновление статистических показателей, установите автоматическое обновление. Дополнительные сведения см. в разделе Статистика индексов.
  5. Доступны ли подходящие индексы? Улучшит ли производительность запроса добавление одного или более индексов? Дополнительные сведения см. в разделах Общие рекомендации по проектированию индексов, Поиск отсутствующих индексов и Общие сведения о помощнике по настройке ядра СУБД. Помощник по настройке ядра СУБД также может рекомендовать создание необходимых статистических показателей.
  6. Имеются ли какие-нибудь данные или наиболее активные участки индексов? Возможно, будет полезно расслоение дисков. Расслоение дисков можно выполнить с использованием RAID (резервного массива независимых дисков) уровня 0, когда данные распределяются на несколько дисковых носителей. Дополнительные сведения см. в разделах Работа с файлами и файловыми группами и RAID.
  7. Поддерживается ли в оптимизаторе запросов самая лучшая возможность оптимизации сложного запроса? Дополнительные сведения см. в разделе Рекомендации по настройке запроса.
  8. Если объем данных большой, необходимо ли секционирование данных? Управляемость данных является главным преимуществом секционирования, но секционирование может также повысить производительность запроса, если таблицы и индексы таблиц секционируются подобным образом. Дополнительные сведения см. в разделах Основные сведения о секционировании и Настройка физической структуры базы данных.

См. также

Основные понятия

Отображение планов выполнения с помощью параметров Showplan инструкции SET (Transact-SQL)
Отображение плана выполнения с помощью классов событий приложения SQL Server Profiler
Безопасность инструкции Showplan
Инструкции Transact-SQL, создающие инструкции Showplan

Справка и поддержка

Получение помощи по SQL Server 2005