Skip to content

Захват планов выполнения только для долгоиграющих запросов

Пересказ статьи Grant Fritchey. Capture Execution Plans Only For Long Running Queries


Вопрос: Как я могу использовать Profiler, чтобы захватить планы выполнения тех запросов, которые выполняются дольше заданного времени?

Query_post_execution_showplan


Расширенные события даже лучше, чем Profiler.Period. Одной из многих вещей, в чем они превосходят профайлер, является способ конфигурации событий. Возьмем к примеру query_post_execution_showplan. Вот поля, которые при этом захватываются:



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

Поэтому фильтрация по длительности довольно проста:

CREATE EVENT SESSION ExecPlansDuration
ON SERVER
ADD EVENT sqlserver.query_post_execution_showplan
(WHERE ([duration] > (1000000)))
ADD TARGET package0.event_file
(SET filename = N'new_session');

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

Однако добавлю одно предостережение. Что бы вы не использовали, Profiler/Trace или Extended Events, захват планов выполнения обходится дорого. Он будет грузить вашу систему. Будьте очень внимательны, чтобы при фильтрации событий вы захватывали только то, что вам действительно нужно. Больше о профилировании запросов прочитайте здесь.

При желании вы также можете добавить Action в query_post_execution_showplan , чтобы получить текст запроса. Таким образом, помимо возможности фильтрации по object_id для процедур, вы можете фильтровать по запросу или фрагменту запроса.

Заключение


Основной вывод состоит в том, что Extended Events просто предлагают большее вариантов и делают эти варианты проще для использования. Вместо того, чтобы напрягать мозги в попытках выяснить, как сделать то или иное с помощью профайлера, начните изучать расширенные события. Как вы можете увидеть из вышеприведенного запроса, их применение довольно простое. Добавьте этот инструмент в свой арсенал.

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.