SQL Server 2016: Live Query Statistics

В SQL Server Management Studio появилась возможность наблюдать за ходом выполнения запроса. По мере выполнения плана запроса отображается взаимодействие между операторами и потоки данных. Этот процесс получил название Live Query Plan и показывает время работы запроса, прогресс на каждом операторе и количество данных. С помощью данного функционала можно более детально изучать работу запросов для их последующей оптимизации. Стоит отметить, что возможность появляется именно в новой SQL Server Management Studio, а работать будет как с SQL Server 2014, так и с SQL Server 2016.

Для того, чтобы увидеть Live Query Plan необходимо на панели инструментов нажать кнопку Include Live Query Statistics.

Также вы можете нажать правой кнопкой мыши на запросе и выбрать необходимый пункт из выпавшего меню.

После этого запустите запрос и сможете увидеть, как он будет выполняться вживую. Выглядеть это будет примерно следующим образом.

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

Также существует возможность посмотреть на Live Query Plan прямо из Activity Monitor путем нажатия правой клавишей мыши на интересующий нас запрос и выбора пункта Show Live Execution Plan.

Но для того, чтобы это сработало необходимо, чтобы в сессии, которая выполняет запрос был включен сбор статистики. Это можно сделать с помощью команд SET STATISTICS XML ON или SET STATISTICS PROFILE ON в нужной сессии, а также включив сбор расширенного события query_post_execution_showplan для нужных сессий. Будьте аккуратны, не активируете это для всех сессий на сервере, т.к. сбор статистики замедляет выполнение запросов.

Функциональность требует наличия прав SHOWPLAN и VIEW SERVER STATE, но эти права обычно всегда выдают тем, кто занимается диагностикой и оптимизацией запросов. Существуют также некоторые ограничения. Live Query Plan недоступен для Natively Compiled хранимых процедур.