Всем привет! Сегодня мы поговорим о том, как посмотреть план выполнения запроса в Microsoft SQL Server, при этом мы рассмотрим несколько способов.
- Введение
- Типы планов выполнения запроса
- Предполагаемый план выполнения
- Действительный план выполнения
- Статистика активных запросов
- Как посмотреть план выполнения запроса
- Отображение предполагаемого плана выполнения запроса
- С помощью интерфейса SSMS
- С помощью инструкции Transact-SQL
- Отображение действительного плана выполнения запроса
- С помощью интерфейса SSMS
- С помощью инструкции Transact-SQL
- Просмотр динамической статистики запросов
Введение
План выполнения запроса – это набор конкретных действий, выполнение которых приведет SQL запрос к итоговому результату.
Иными словами, план выполнения запроса – это то, как именно будет выполняться пользовательский запрос, т.е. как именно будет осуществляться доступ к исходным данных, в каком порядке, какие конкретные методы будут использоваться для извлечения данных из каждой таблицы, какие конкретные методы будут использованы для вычислений, фильтрации, статистической обработки и сортировки данных.
Более подробно план выполнения запроса мы рассматривали в материале
План выполнения запроса в Microsoft SQL Server – что это такое и для чего нужно.
Сегодня мы с Вами поговорим о том, как посмотреть план запроса и начать его анализировать. Однако сначала обязательно стоит отметить, что существует несколько типов планов запроса.
Типы планов выполнения запроса
Оптимизатор запросов Microsoft SQL Server формирует только один план выполнения для запроса, однако существует несколько типов планов выполнения запроса, которые можно отобразить с помощью SQL Server Management Studio (SSMS).
Заметка! Обзор функционала SQL Server Management Studio (SSMS).
Предполагаемый план выполнения
Предполагаемый план выполнения (Estimated Execution Plan) – это план, созданный оптимизатором запросов на основе оценок.
При создании предполагаемого плана выполнения сам запрос и в целом пакеты языка Transact-SQL не выполняются, поэтому такой план не содержит фактических метрик использования ресурсов.
Вместо этого предполагаемый план отображает наиболее вероятный план выполнения запроса, которому следовал бы SQL Server при фактическом выполнении запроса, а также этот план отображает расчетное движение строк при выполнении нескольких операторов в плане.
За счет того, что запрос фактически не выполняется, это не создает никакой серьезной задержки перед отображением предполагаемого плана выполнения запроса.
Такой план удобно использовать в тех случаях, когда запрос выполняется долго, а нам необходимо посмотреть план, который собирается использовать SQL Server для данного запроса.
Действительный план выполнения
Действительный план выполнения (Actual Execution Plan) – это план, созданный оптимизатором запросов после фактического выполнения запроса. Иными словами, план становится доступным после выполнения SQL инструкции. Поэтому такой план отображает фактические метрики использования ресурсов.
Примечание! Для того, чтобы иметь возможность просматривать план выполнения запроса пользователи должны обладать соответствующими разрешениями на запуск SQL запроса, для которого создается графический план выполнения. Кроме того, пользователям должно быть предоставлено разрешение SHOWPLAN для всех баз данных, упоминаемых в запросе.
Статистика активных запросов
Статистика активных запросов (Live Query Statistics) – это план, который создаётся в режиме реального времени. Такой план доступен во время выполнения SQL запроса и обновляется каждую секунду, что позволяет нам просматривать динамический план выполнения активного запроса.
Такая возможность позволяет нам анализировать процесс выполнения запроса в режиме реального времени по мере передачи управления от одного оператора плана запроса другому.
Динамический план запроса отображает общий ход выполнения запроса и текущую статистику выполнения на уровне оператора, например, число полученных строк, затраченное время, ход выполнения оператора и т. д. Так как эти данные доступны в режиме реального времени, чтобы их увидеть, не нужно дожидаться завершения запроса, такая статистика бывает полезна для отладки проблем с производительностью запросов. Статистика активных запросов доступна с версии SQL Server 2016.
Примечание! Эта функция предназначена в основном для диагностики. Ее использование может значительно снизить общую производительность запроса.
Как посмотреть план выполнения запроса
Посмотреть план выполнения запроса можно, конечно же, с помощью SQL Server Management Studio. При этом для каждого типа используется свой способ просмотра.
Отображение предполагаемого плана выполнения запроса
Посмотреть предполагаемый план выполнения запроса можно несколькими способами, в частности:
- С помощью интерфейса SQL Server Management Studio
- С помощью инструкции языка Transact-SQL
Заметка! Что такое T-SQL. Подробное описание для начинающих.
С помощью интерфейса SSMS
В окне создания запроса на панели инструментов нажмите кнопку «Показать предполагаемый план выполнения» (Display Estimated Execution Plan).
В результате откроется вкладка «План выполнения». Сам запрос, как Вы помните, в данный момент выполняться не будет.
Заметка! Статистика в Microsoft SQL Server – что это такое и для чего она нужна.
С помощью инструкции Transact-SQL
Тот же самый план выполнения можно получить с помощью следующей инструкции языка T-SQL
SET SHOWPLAN_XML ON;
В результате, когда Вы будете запускать запрос на выполнение, вместо результирующего набора данных Вам будет возвращен XML документ, и если на него щелкнуть, т.е. открыть, то план выполнения запроса будет отображен графически, также как с помощью иконки на панели инструментов.
Чтобы выключить отображение плана необходимо установить данному параметру значение OFF.
SET SHOWPLAN_XML OFF;
Отображение действительного плана выполнения запроса
Фактический план выполнения запроса можно также посмотреть нескольким способами:
- С помощью интерфейса SQL Server Management Studio
- С помощью инструкции языка Transact-SQL
С помощью интерфейса SSMS
В окне создания запроса на панели инструментов нажмите кнопку «Включить действительный план выполнения» (Include Actual Execution Plan).
В результате, когда Вы выполните запрос, у Вас дополнительно к результатам добавится вкладка «План выполнения». В данном случае, как Вы понимаете, сам запрос будет выполнен, так как результирующий набор будет сформирован.
Заметка! Как получить последовательность дат в указанном промежутке на T-SQL.
С помощью инструкции Transact-SQL
Тот же самый план выполнения можно получить с помощью следующей инструкции языка T-SQL
SET STATISTICS XML ON;
В результате, после выполнения запроса у Вас отобразится дополнительное окно с планом запроса формате XML. Если кликнуть на этот документ, то план выполнения запроса будет отображен графически.
Чтобы выключить отображение плана, необходимо установить данному параметру значение OFF.
SET STATISTICS XML OFF;
Просмотр динамической статистики запросов
В окне создания запроса на панели инструментов нажмите кнопку «Включить статистику активных запросов» (Include Live Query Statistics).
В итоге в момент выполнения запроса откроется вкладка «Статистика активных запросов», на которой в режиме реального времени можно будет наблюдать ход выполнения запроса в формате плана запроса.
Заметка! Всем тем, кто только начинает свое знакомство с языком SQL, рекомендую прочитать книгу «SQL код» – это самоучитель по языку SQL для начинающих программистов. В ней очень подробно рассмотрены основные конструкции языка.
На сегодня это все, надеюсь, материал был Вам полезен, пока!
а что делать если нужно посмотреть план выполняющегося запроса а ссмс пишет ошибку. Не удалось получить данные плана выполнения.
причем в хранилище планов этого плана нет. (1 и тот же запрос выполняется а план то есть то нет.)