sys.dm_exec_query_optimizer_info (Transact-SQL)
Возвращает подробные статистики по операциям оптимизатора запросов SQL Server. Это представление можно использовать для настройки рабочей нагрузки при обнаружении проблем, связанных с оптимизацией запросов, или для улучшения производительности обработки запросов. Например, можно использовать общее количество оптимизаций, значение прошедшего времени и значение окончательных затрат для сравнения оптимизаций запросов в текущей рабочей нагрузке и любых изменений, отмеченных во время процесса настройки. Некоторые счетчики содержат данные, применимые только для внутренней диагностики SQL Server. Эти счетчики помечены атрибутом «Только для внутреннего использования.».
Название |
Тип данных |
Описание |
---|---|---|
counter |
nvarchar(4000) |
Имя события статистики оптимизатора. |
occurrence |
bigint |
Количество вхождений события оптимизации для этого счетчика. |
value |
float |
Среднее значение свойства для вхождения события. |
Разрешения
Требуется разрешение VIEW SERVER STATE для сервера.
Замечания
Таблица sys.dm_exec_query_optimizer_info содержит следующие свойства (счетчики). Все значения частотности рассматриваются совокупно и при перезапуске системы устанавливаются в 0. Все значения полей значений при перезапуске системы устанавливаются в NULL. Все значения значимых столбцов, по которым определяется среднее, используют значение частотности из той же строки, что и знаменатель в вычислении среднего. Все оптимизации запросов измеряются, когда SQL Server определяет наличие изменений в dm_exec_query_optimizer_info, включая как пользовательские, так и сформированные системой запросы. Выполнение кэшированного плана не изменяет значений в таблице dm_exec_query_optimizer_info, имеют значение только оптимизации.
Счетчик |
Вхождение |
Значение |
---|---|---|
оптимизации |
Общее число операций оптимизации. |
Не применяется. |
затраченное время |
Общее число операций оптимизации. |
Среднее время, затраченное на оптимизацию отдельной инструкции (запроса), в секундах. |
окончательные затраты |
Общее число операций оптимизации. |
Средняя оценка затрат для оптимизированного плана во внутренних единицах затрат. |
обычный план |
Только для внутреннего использования. |
Только для внутреннего использования. |
задачи |
Только для внутреннего использования. |
Только для внутреннего использования. |
без плана |
Только для внутреннего использования. |
Только для внутреннего использования. |
поиск 0 |
Только для внутреннего использования. |
Только для внутреннего использования. |
время поиска 0 |
Только для внутреннего использования. |
Только для внутреннего использования. |
задачи поиска 0 |
Только для внутреннего использования. |
Только для внутреннего использования. |
поиск 1 |
Только для внутреннего использования. |
Только для внутреннего использования. |
время поиска 1 |
Только для внутреннего использования. |
Только для внутреннего использования. |
задачи поиска 1 |
Только для внутреннего использования. |
Только для внутреннего использования. |
поиск 2 |
Только для внутреннего использования. |
Только для внутреннего использования. |
время поиска 2 |
Только для внутреннего использования. |
Только для внутреннего использования. |
задачи поиска 2 |
Только для внутреннего использования. |
Только для внутреннего использования. |
выигрыш при переходе от стадии 0 к стадии 1 |
Только для внутреннего использования. |
Только для внутреннего использования. |
выигрыш при переходе от стадии 1 к стадии 2 |
Только для внутреннего использования. |
Только для внутреннего использования. |
время ожидания |
Только для внутреннего использования. |
Только для внутреннего использования. |
превышение предела памяти |
Только для внутреннего использования. |
Только для внутреннего использования. |
инструкции insert |
Количество операций оптимизации для инструкций INSERT. |
Не применяется. |
инструкции delete |
Количество операций оптимизации для инструкций DELETE. |
Не применяется. |
инструкции update |
Количество операций оптимизации для инструкций UPDATE. |
Не применяется. |
содержащие вложенный запрос |
Количество операций оптимизации для запросов, содержащих как минимум один вложенный запрос. |
Не применяется. |
сбой устранения вложенности |
Только для внутреннего использования. |
Только для внутреннего использования. |
таблицы |
Общее число операций оптимизации. |
Среднее число таблиц, на которые ссылается оптимизированный запрос. |
подсказки |
Количество раз, когда была указана подсказка. Список подсказок включает: подсказки в запросах JOIN, GROUP, UNION и FORCE ORDER, параметр набора FORCE PLAN и подсказки в соединениях. |
Не применяется. |
подсказка упорядочивания |
Количество раз, когда была указана подсказка принудительного упорядочивания. |
Не применяется. |
подсказка в соединении |
Количество раз, когда по подсказке в соединении принудительно вызывался алгоритм соединения. |
Не применяется. |
обращение к представлению |
Количество раз, когда производилось обращение к представлению в запросе. |
Не применяется. |
удаленный запрос |
Количество операций оптимизации, при которых запрос обращался как минимум к одному удаленному источнику данных, например к таблице с четырехкомпонентным именем или результату инструкции OPENROWSET. |
Не применяется. |
максимальное DOP |
Общее число операций оптимизации. |
Среднее эффективное значение MAXDOP для оптимизированного плана. По умолчанию эффективное значение MAXDOP определяется параметром конфигурации сервера max degree of parallelism и может быть заменено для конкретного запроса значением подсказки в запросе MAXDOP. |
максимальный уровень рекурсии |
Количество операций оптимизации, в которых был задан уровень MAXRECURSION больше 0 в рамках подсказки в запросе. |
Средний уровень MAXRECURSION в операциях оптимизации, для которых был задан максимальный уровень рекурсии в рамках подсказки в запросе. |
загруженные индексированные представления |
Только для внутреннего использования. |
Только для внутреннего использования. |
сопоставленные индексированные представления |
Количество операций оптимизации, в которых было сопоставлено одно или несколько индексированных представлений. |
Среднее количество сопоставленных представлений. |
использованные индексированные представления |
Количество операций оптимизации, для которых в выходном плане было использовано одно или несколько индексированных представлений после согласования. |
Среднее количество использованных представлений. |
обновленные индексированные представления |
Количество операций оптимизации DML-инструкции, выдающих план, обслуживающий одно или несколько индексированных представлений. |
Среднее количество обслуженных представлений. |
запрос динамического курсора |
Количество операций оптимизации, для которых был указан запрос динамического курсора. |
Не применяется. |
запрос быстрого перемещения курсора вперед |
Количество операций оптимизации, для которых был указан запрос однопроходного курсора. |
Не применяется. |
merge stmt |
Количество операций оптимизации для инструкций MERGE. |
Неприменимо |
Примеры
A. Просмотр статистики выполнения оптимизатора
Каковы текущие статистики выполнения оптимизатора для данного экземпляра SQL Server?
SELECT * FROM sys.dm_exec_query_optimizer_info;
Б. Просмотр общего количества операций оптимизации
Количество выполняемых операций оптимизации.
SELECT occurrence AS Optimizations FROM sys.dm_exec_query_optimizer_info
WHERE counter = 'optimizations';
В. Среднее время, затраченное на операцию оптимизации
Каково среднее время, затраченное на операцию оптимизации?
SELECT ISNULL(value,0.0) AS ElapsedTimePerOptimization
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'elapsed time';
Г. Доля операций оптимизации, задействующих вложенные запросы
Доля оптимизированных запросов, содержащих вложенные запросы.
SELECT (SELECT CAST (occurrence AS float) FROM sys.dm_exec_query_optimizer_info WHERE counter = 'contains subquery') /
(SELECT CAST (occurrence AS float)
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'optimizations')
AS ContainsSubqueryFraction;