Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к: SQL Server 2016 (13.x) и более поздние версии
: Azure SQL Database Azure
SQL Managed Instance
AzureSynapse Analytics
SQL database in Microsoft Fabric
Содержит сведения о каждом плане выполнения, связанном с запросом.
| Имя столбца | Тип данных | Description |
|---|---|---|
plan_id |
bigint | Первичный ключ. |
query_id |
bigint | Внешний ключ. Соединяется с sys.query_store_query_text (Transact-SQL). |
plan_group_id |
bigint | Идентификатор группы планов. Для запросов курсоров обычно требуется несколько планов (заполнение и получение). Заполнение и выборка планов, скомпилированных вместе, находятся в одной группе.0 означает, что план не в группе. |
engine_version |
nvarchar(32) | Версия подсистемы, используемой для компиляции плана в <major>.<minor>.<build>.<revision> формате. |
compatibility_level |
smallint | Уровень совместимости базы данных, ссылку на которую содержит запрос. |
query_plan_hash |
binary(8) | Хэш MD5 отдельного плана. |
query_plan |
nvarchar(max) | Showplan XML для плана запроса. |
is_online_index_plan |
bit | План использовался во время построения индекса в режиме "в сети". Примечание. Azure Synapse Analytics всегда возвращается 0. |
is_trivial_plan |
bit | План является обычным планом (вывод на этапе 0 оптимизатора запросов). Примечание. Azure Synapse Analytics всегда возвращается 0. |
is_parallel_plan |
bit | План является параллельным. Примечание. Azure Synapse Analytics всегда возвращается 1. |
is_forced_plan |
bit | План помечается как принудительный при выполнении хранимой процедуры sys.sp_query_store_force_planпользователем. Механизм принудительного применения не гарантирует , что этот точный план будет использоваться для запроса, query_idна который ссылается ссылка. Принудительное выполнение плана приводит к повторной компиляции запроса и обычно создает точно тот же или аналогичный план, на который ссылается plan_idплан. Если принудительное выполнение плана не выполнено, force_failure_count увеличивается и last_force_failure_reason заполняется причиной сбоя.Примечание. Azure Synapse Analytics всегда возвращается 0. |
is_natively_compiled |
bit | План включает скомпилированные в собственном коде процедуры, оптимизированные для памяти. (0 = FALSE, 1 = TRUE).Примечание. Azure Synapse Analytics всегда возвращается 0. |
force_failure_count |
bigint | Количество неудачных попыток принудительного выполнения этого плана. Его можно увеличить только при повторной компиляции запроса (не при каждом выполнении). Сбрасывается на 0 каждый раз, когда is_forced_plan выполняется изменение FALSETRUE.Примечание. Azure Synapse Analytics всегда возвращается 0. |
last_force_failure_reason |
int | Причина, по которой принудительное выполнение плана завершилось сбоем. 0: без сбоя; в противном случае — номер ошибки, вызвавшей сбой принудительного выполнения 3617: COMPILATION_ABORTED_BY_CLIENT8637: ONLINE_INDEX_BUILD8675: OPTIMIZATION_REPLAY_FAILED8683: INVALID_STARJOIN8684: TIME_OUT8689: NO_DB8690: HINT_CONFLICT8691: SETOPT_CONFLICT8694: DQ_NO_FORCING_SUPPORTED8698: NO_PLAN8712: NO_INDEX8713: VIEW_COMPILE_FAILED<другое значение>: GENERAL_FAILUREПримечание. Azure Synapse Analytics всегда возвращается 0. |
last_force_failure_reason_desc |
nvarchar(128) | Текстовое last_force_failure_reasonописание .COMPILATION_ABORTED_BY_CLIENT: прерванная компиляция запроса клиента до завершенияONLINE_INDEX_BUILD: запрос пытается изменить данные, а целевая таблица имеет индекс, созданный в СетиOPTIMIZATION_REPLAY_FAILED: не удалось выполнить скрипт воспроизведения оптимизации.INVALID_STARJOIN: план содержит недопустимую спецификацию StarJoinTIME_OUT: Оптимизатор превысил количество разрешенных операций при поиске плана, указанного в принудительном планеNO_DB: база данных, указанная в плане, не существуетHINT_CONFLICT: невозможно скомпилировать запрос, так как план конфликтует с указанием запросаDQ_NO_FORCING_SUPPORTED: не удается выполнить запрос, так как план конфликтует с использованием распределенных запросов или полнотекстовых операций.NO_PLAN: обработчик запросов не мог создать план запроса, так как принудительный план не удалось проверить как допустимый для запросаNO_INDEX: индекс, указанный в плане больше не существуетVIEW_COMPILE_FAILED: не удалось принудительно заставить план запроса из-за проблемы в индексированном представлении, на который ссылается планGENERAL_FAILURE: общая принудиющая ошибка (не охватывается другими причинами)Примечание. Azure Synapse Analytics всегда возвращается NONE. |
count_compiles |
bigint | Статистика компиляции плана. |
initial_compile_start_time |
datetimeoffset | Статистика компиляции плана. |
last_compile_start_time |
datetimeoffset | Статистика компиляции плана. |
last_execution_time |
datetimeoffset | Время последнего выполнения относится к последнему времени окончания запроса или плана. |
avg_compile_duration |
float | Планирование статистики компиляции в микросекундах. Разделить на 1000 000, чтобы получить секунды. |
last_compile_duration |
bigint | Планирование статистики компиляции в микросекундах. Разделить на 1000 000, чтобы получить секунды. |
plan_forcing_type |
int |
Область применения: SQL Server 2017 (14.x) и более поздних версий Тип принудительного выполнения плана. 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
Область применения: SQL Server 2017 (14.x) и более поздних версий Текстовое plan_forcing_typeописание .NONE: нет плана принудительного выполненияMANUAL: планирование, принудительное выполнение пользователемAUTO: планирование принудительная автоматическая настройка. |
has_compile_replay_script |
bit |
Область применения: SQL Server 2022 (16.x) и более поздних версий Указывает, связан ли план со сценарием воспроизведения оптимизации: 0 = без сценария воспроизведения оптимизации (ни один или даже недопустимый). 1 = записанный сценарий воспроизведения оптимизации. Неприменимо к Azure Synapse Analytics. |
is_optimized_plan_forcing_disabled |
bit |
Область применения: SQL Server 2022 (16.x) и более поздних версий Указывает, была ли отключена оптимизация принудительного выполнения плана: 0 = не выдается. 1 = не отключено. Неприменимо к Azure Synapse Analytics. |
plan_type |
int |
Область применения: SQL Server 2022 (16.x) и более поздних версий Тип плана. 0. Скомпилированный план 1. План диспетчера 2. План варианта запроса Неприменимо к Azure Synapse Analytics. |
plan_type_desc |
nvarchar(120) |
Область применения: SQL Server 2022 (16.x) и более поздних версий Текстовое описание типа плана. Скомпилированный план: указывает, что план является оптимизированным для непараметров планом. План диспетчера: указывает, что план является планом, оптимизированным для параметров, диспетчером План варианта запроса: указывает, что план является оптимизированным для параметра планом, оптимизированным для варианта запроса Неприменимо к Azure Synapse Analytics. |
Замечания
Несколько планов могут быть вынуждены при включении хранилище запросов для вторичных реплик.
В Azure Synapse Analytics, используя столбцы has_compile_replay_script, is_optimized_plan_forcing_disabledplan_typeplan_type_desc приводит к ошибкеInvalid Column Name, так как они не поддерживаются. Пример B см. в примере использования sys.query_store_plan в Azure Synapse Analytics.
Ограничения принудительного использования планов
Хранилище запросов имеет механизм, позволяющий оптимизатору запросов принудительно применить определенный план выполнения. Но существуют некоторые ограничения, которые могут препятствовать применению плана.
Во-первых, когда план содержит следующие конструкции:
- Вставка групповой инструкции
- ссылка на внешнюю таблицу;
- распределенный запрос или полнотекстовые операции;
- Использование эластичных запросов
- Динамические курсоры или курсоры ключевого набора
- Недопустимая спецификация соединения типа "звезда"
Примечание.
База данных SQL Azure и SQL Server 2019 и более поздних версий плана поддержки планов сборки для статических и быстрых курсоров вперед.
Во-вторых, когда объекты, от которых зависит план, больше не доступны:
- База данных (если база данных, где был создан план, больше не существует)
- индекс (больше не существует или отключен).
Наконец, проблемы с самим планом:
- недопустим для запроса;
- оптимизатор запросов превысил количество разрешенных операций;
- неправильно сформированный XML-код плана.
Разрешения
Требуется разрешение VIEW DATABASE STATE.
Примеры
А. Найдите причину, по которой SQL Server не удалось принудительно заставить план с помощью QDS
Обратите внимание на last_force_failure_reason_desc столбцы и force_failure_count выполните следующие действия:
SELECT TOP 1000
p.query_id,
p.plan_id,
p.last_force_failure_reason_desc,
p.force_failure_count,
p.last_compile_start_time,
p.last_execution_time,
q.last_bind_duration,
q.query_parameterization_type_desc,
q.context_settings_id,
c.set_options,
c.STATUS
FROM sys.query_store_plan p
INNER JOIN sys.query_store_query q
ON p.query_id = q.query_id
INNER JOIN sys.query_context_settings c
ON c.context_settings_id = q.context_settings_id
LEFT JOIN sys.query_store_query_text t
ON q.query_text_id = t.query_text_id
WHERE p.is_forced_plan = 1
AND p.last_force_failure_reason != 0;
B. Запрос для просмотра результатов плана запросов в Azure Synapse Analytics
Используйте следующий пример запроса, чтобы найти последние планы выполнения 100 в хранилище запросов в Azure Synapse Analytics.
SELECT TOP 100
plan_id,
query_id,
plan_group_id,
engine_version,
compatibility_level,
query_plan_hash,
query_plan,
is_online_index_plan,
is_trivial_plan,
is_parallel_plan,
is_forced_plan,
is_natively_compiled,
force_failure_count,
last_force_failure_reason,
last_force_failure_reason_desc,
count_compiles,
initial_compile_start_time,
last_compile_start_time,
last_execution_time,
avg_compile_duration,
last_compile_duration,
plan_forcing_type,
plan_forcing_type_desc
FROM sys.query_store_plan
ORDER BY last_execution_time DESC;
Связанный контент
- Мониторинг производительности с использованием хранилища запросов
- sys.database_query_store_options (Transact-SQL)
- sys.query_context_settings (Transact-SQL)
- sys.query_store_query (Transact-SQL)
- sys.query_store_query_text (Transact-SQL)
- sys.query_store_runtime_stats (Transact-SQL);
- sys.query_store_wait_stats (Transact-SQL)
- sys.query_store_runtime_stats_interval (Transact-SQL)
- Представления системного каталога (Transact-SQL)
- Хранимые процедуры хранилища запросов (Transact-SQL)