Новость из категории: Информация

SQL Server: проблема запросов и процедур

Инструментарий для работы

SQL Server: проблема запросов и процедур

Важно, чтобы администратор базы данных располагал необходимым инструментарием (сценариями) для выполнения работы. Мы принимали неверные решения из-за ограниченного набора сценариев, который направлял нас по ложному следу. Я предложил администратору баз данных воспользоваться инструментом из моего комплекта, который будет описан ниже. В сущности, это два запроса на основе двух различных динамических административных представлений: одно ориентировано на статистику выполнения запросов, а другое изолирует метрики выполнения только для хранимых процедур. Правильно используя два сценария, вы получите исчерпывающее представление запросов и хранимых процедур, которые вызывают больше всего проблем с экземпляром. Этими проблемами могут быть:
• большое число операций чтения;
• большое число операций записи;
• увеличенное время выполнения;
• высокая нагрузка на процессор.

Эти два сценария настраиваются для каждого случая простым снятием комментариев с соответствующего предложения ORDER BY. Кроме того, в каждом сценарии можно снять комментарии с предложения WHERE, а затем заменить шаблонный параметр для фильтрации по имени базы данных, если нужно сузить область с уровня экземпляра до базы данных. В каждом запросе будут возвращены все статистические данные, относящиеся к:
• описательной идентификации (имя, код, планы запросов);
• действиям по чтению (логическим или физическим);
• действиям по записи;
• исторической информации по количеству возвращенных строк;
• метрикам процессора;
• времени выполнения, счетчикам, продолжительности.

В случае анализа запроса вы также получите данные о продолжительности существования кэша планов. Затем из этой информации выделяются минимальные, максимальные, средние и итоговые значения для каждой подкатегории.

Код запроса и тестовые результаты

Ниже приведен код для обоих аналитических запросов — сначала ориентированный на запросы, а следом предназначенный исключительно для хранимых процедур. Размер кода довольно велик, но вам не составит труда скопировать и вставить его в свой сценарий (естественно, полностью под вашу ответственность). Я даже поместил эти запросы в хранимые процедуры. Как всегда, я изменяю результаты, чтобы не раскрывать сведений о моих клиентах. Метрики взяты из практических применений, но все планы, код выполнения инструкций и имена изменены. Для лучшего отображения результатов я сначала экспортировал их в Excel.

SQL Server: проблема запросов и процедур
Анализ требовательных запросов

Анализ требовательных запросов для экземпляра SQL Server приведен выше. Ядро этого запроса взято из динамического административного представления sys. dm_exec_procedure_stats, в котором хранятся данные о каждом кэшированном запросе, выполняемом в экземпляре.

SQL Server: проблема запросов и процедур
Информация о процессоре

SQL Server: проблема запросов и процедур
Информация о времени выполнения

SQL Server: проблема запросов и процедур
Информация о логических операциях чтения

SQL Server: проблема запросов и процедур
Информация о физических операциях чтения

SQL Server: проблема запросов и процедур
Информация о записи

SQL Server: проблема запросов и процедур
Информация о возвращенных строках

SQL Server: проблема запросов и процедур
Информация о возвращенных строках

SQL Server: проблема запросов и процедур
Информация о коде и плане

После выполнения мы видим результаты (разделенные мною на категории), представленные на скриншотах выше. Первые два столбца повторяются только для удобства чтения исчерпывающих результатов.

SQL Server: проблема запросов и процедур
Анализ требовательных хранимых процедур

Анализ требовательных хранимых процедур для экземпляра SQL Server представлен выше. Ниже рассматривается код и результаты запроса, направленного к динамическому административному представлению sys.dm_exec_procedure_ stats. Некоторые столбцы не включены в это динамическое административное представление в отличие от родственного DMV в основе предшествующего запроса, поэтому результирующие столбцы немного иные.

SQL Server: проблема запросов и процедур
Идентификация процедуры и счетчик выполнения

SQL Server: проблема запросов и процедур
Информация о процессоре

SQL Server: проблема запросов и процедур
Информация о времени выполнения

SQL Server: проблема запросов и процедур
Информация о логических операциях чтения

SQL Server: проблема запросов и процедур
Информация о физических операциях чтения

SQL Server: проблема запросов и процедур
Информация об операциях записи

SQL Server: проблема запросов и процедур
Информация о выполнении и коде или плане процедуры

Как и в описанном выше случае выполнения сценария, результаты (разделенные мною на категории) представлены на скриншотах выше. Первые два столбца повторяются только для удобства чтения исчерпывающих результатов.

Как мы видим, вновь динамические административные представления играют роль исчерпывающего источника информации для диагностики проблем SQL Server (конечно, начиная с версии SQL Server 2005). Именно поэтому такие конструкции представляют собой мой излюбленный компонент SQL Server, а компания Microsoft продолжает совершенствовать и расширять объекты динамического управления в каждом выпуске своих продуктов.


Мечтаете вырастить из ребенка гениального IT'шника или, по крайней мере, программиста? Тогда начинать его знакомство с программной средой стоит не с SQL Server, а с программы Scratch - http://andprog.ru/scratch.html (http://andprog.ru/scratch.html). Это идеальный инструмент, который позволит вашему чаду освоить основы программирования в формате увлекательной игры!

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх