sys.dm_exec_query_optimizer_info (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Возвращает подробную статистику о работе оптимизатора запросов SQL Server. Это представление можно использовать для настройки рабочей нагрузки при обнаружении проблем, связанных с оптимизацией запросов, или для улучшения производительности обработки запросов. Например, можно использовать общее число оптимизаций, значение затрачиваемого времени и значение конечной стоимости для сравнения с оптимизацией запросов текущей рабочей нагрузки и любыми изменениями во время процесса настройки. Некоторые счетчики предоставляют данные, относящиеся только к внутреннему использованию SQL Server. Эти счетчики помечены атрибутом «Только для внутреннего использования.».

Примечание.

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_exec_query_optimizer_info. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя. Тип данных Description
Счетчик nvarchar(4000) Имя события статистики оптимизатора.
occurrence bigint Количество вхождений события оптимизации для этого счетчика.
значение float Среднее значение свойства для вхождения события.
pdw_node_id int Область применения: Azure Synapse Analytics, Analytics Platform System (PDW)

Идентификатор узла, на который находится данное распределение.

Разрешения

На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE.

Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE в базе данных или членство в роли сервера ##MS_ServerStateReader##.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.

Замечания

sys.dm_exec_query_optimizer_info содержит следующие свойства (счетчики). Все значения частотности рассматриваются совокупно и при перезапуске системы устанавливаются в 0. Все значения полей значений при перезапуске системы устанавливаются в NULL. Все значения значимых столбцов, по которым определяется среднее, используют значение частотности из той же строки, что и знаменатель в вычислении среднего. Все оптимизации запросов измеряются, когда SQL Server определяет изменения dm_exec_query_optimizer_info, включая запросы, созданные пользователем и системой. Выполнение уже кэшированного плана не изменяет значения в dm_exec_query_optimizer_info, только оптимизации являются значительными.

Счетчик Вхождение Значение
оптимизации Общее число операций оптимизации. Нет данных
затраченное время Общее число операций оптимизации. Среднее время, затраченное на оптимизацию отдельной инструкции (запроса), в секундах.
окончательные затраты Общее число операций оптимизации. Средняя оценка затрат для оптимизированного плана во внутренних единицах затрат.
обычный план Только для внутреннего использования Только для внутреннего использования
задачи Только для внутреннего использования Только для внутреннего использования
без плана Только для внутреннего использования Только для внутреннего использования
search 0 Только для внутреннего использования Только для внутреннего использования
search 0 time Только для внутреннего использования Только для внутреннего использования
search 0 tasks Только для внутреннего использования Только для внутреннего использования
search 1 Только для внутреннего использования Только для внутреннего использования
search 1 time Только для внутреннего использования Только для внутреннего использования
search 1 tasks Только для внутреннего использования Только для внутреннего использования
поиск 2 Только для внутреннего использования Только для внутреннего использования
время поиска 2 Только для внутреннего использования Только для внутреннего использования
задачи поиска 2 Только для внутреннего использования Только для внутреннего использования
gain stage 0 to stage 1 Только для внутреннего использования Только для внутреннего использования
выигрыш при переходе от стадии 1 к стадии 2 Только для внутреннего использования Только для внутреннего использования
timeout Только для внутреннего использования Только для внутреннего использования
превышение предела памяти Только для внутреннего использования Только для внутреннего использования
инструкции insert Количество операций оптимизации для инструкций INSERT. Нет данных
инструкции delete Количество операций оптимизации для инструкций DELETE. Нет данных
инструкции update Количество операций оптимизации для инструкций UPDATE. Нет данных
содержащие вложенный запрос Количество операций оптимизации для запросов, содержащих как минимум один вложенный запрос. Нет данных
сбой устранения вложенности Только для внутреннего использования Только для внутреннего использования
В таблицах Общее число операций оптимизации. Среднее число таблиц, на которые ссылается оптимизированный запрос.
hints Количество раз, когда было задано указание. Подсчитываемые подсказки включают: JOIN, GROUP, UNION и FORCE ORDER query hints, FORCE PLAN set option, and join hints. Нет данных
указание упорядочивания Количество раз, когда было задано указание принудительного упорядочивания. Нет данных
указание соединения Количество раз, когда по указанию соединения принудительно вызывался алгоритм соединения. Нет данных
обращение к представлению Количество раз, когда производилось обращение к представлению в запросе. Нет данных
удаленный запрос Количество операций оптимизации, при которых запрос обращался как минимум к одному удаленному источнику данных, например к таблице с четырехкомпонентным именем или результату инструкции OPENROWSET. Нет данных
максимальное DOP Общее число операций оптимизации. Среднее эффективное значение MAXDOP для оптимизированного плана. По умолчанию действующий maxDOP определяется параметром конфигурации сервера параллелизма и может быть переопределен для определенного запроса значением указания запроса MAXDOP.
максимальный уровень рекурсии Количество операций оптимизации, в которых был задан уровень MAXRECURSION больше 0 в рамках указания запроса. Средний уровень MAXRECURSION в операциях оптимизации, для которых был задан максимальный уровень рекурсии в рамках указания запроса.
загруженные индексированные представления Только для внутреннего использования Только для внутреннего использования
сопоставленные индексированные представления Количество операций оптимизации, в которых было сопоставлено одно или несколько индексированных представлений. Среднее количество сопоставленных представлений.
использованные индексированные представления Количество операций оптимизации, для которых в выходном плане было использовано одно или несколько индексированных представлений после согласования. Среднее количество использованных представлений.
обновленные индексированные представления Количество операций оптимизации DML-инструкции, выдающих план, обслуживающий одно или несколько индексированных представлений. Среднее количество обслуженных представлений.
запрос динамического курсора Количество операций оптимизации, для которых был указан запрос динамического курсора. Нет данных
запрос быстрого перемещения курсора вперед Количество операций оптимизации, для которых был указан запрос однопроходного курсора. Нет данных
merge stmt Количество операций оптимизации для инструкций MERGE. Нет данных

Примеры

А. Просмотр статистики выполнения оптимизатора

Что такое текущая статистика выполнения оптимизатора для этого экземпляра SQL Server?

SELECT * FROM sys.dm_exec_query_optimizer_info;  

B. Просмотр общего количества операций оптимизации

Количество выполняемых операций оптимизации.

SELECT occurrence AS Optimizations FROM sys.dm_exec_query_optimizer_info  
WHERE counter = 'optimizations';  

C. Среднее время, затраченное на операцию оптимизации

Каково среднее время, затраченное на операцию оптимизации?

SELECT ISNULL(value,0.0) AS ElapsedTimePerOptimization  
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'elapsed time';  

D. Доля операций оптимизации, в которых задействованы вложенные запросы

Доля оптимизированных запросов, содержащих вложенные запросы.

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;  

См. также

Динамические административные представления и функции (Transact-SQL)
Связанные с выполнением динамические административные представления и функции (Transact-SQL)