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)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по