sys.query_store_plan (Transact-SQL)sys.query_store_plan (Transact-SQL)

Применимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) и более поздние версии ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse AnalyticsПрименимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) and later ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database ДаУправляемый экземпляр SQL AzureAzure SQL Managed InstanceYesУправляемый экземпляр SQL AzureAzure SQL Managed Instance даAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

Содержит сведения о каждом плане выполнения, связанном с запросом.Contains information about each execution plan associated with a query.

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
plan_idplan_id bigintbigint Первичный ключ.Primary key.
query_idquery_id bigintbigint Внешний ключ.Foreign key. Присоединение к sys.query_store_query ()Transact-SQL .Joins to sys.query_store_query (Transact-SQL).
plan_group_idplan_group_id bigintbigint Идентификатор группы планов.ID of the plan group. Для запросов курсоров обычно требуется несколько планов (заполнение и получение).Cursor queries typically require multiple (populate and fetch) plans. Заполнять и выборке собранные планы находятся в одной группе.Populate and fetch plans that are compiled together are in the same group.

0 означает, что план не входит в группу.0 means plan is not in a group.
engine_versionengine_version nvarchar(32)nvarchar(32) Версия подсистемы, используемой для компиляции плана в формате "основной. дополнительный. сборка. Редакция" .Version of the engine used to compile the plan in 'major.minor.build.revision' format.
compatibility_levelcompatibility_level smallintsmallint Уровень совместимости базы данных, на который ссылается запрос.Database compatibility level of the database referenced in the query.
query_plan_hashquery_plan_hash Binary (8)binary(8) Хэш MD5 отдельного плана.MD5 hash of the individual plan.
query_planquery_plan nvarchar(max)nvarchar(max) Инструкция Showplan XML для плана запроса.Showplan XML for the query plan.
is_online_index_planis_online_index_plan bitbit План использовался при построении индекса в режиме «в сети».Plan was used during an online index build.
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
is_trivial_planis_trivial_plan bitbit План является тривиальным планом (выходные данные на этапе 0 оптимизатора запросов).Plan is a trivial plan (output in stage 0 of query optimizer).
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
is_parallel_planis_parallel_plan bitbit План является параллельным.Plan is parallel.
Примечание. Azure синапсе Analytics всегда будет возвращать один (1).Note: Azure Synapse Analytics will always return one (1).
is_forced_planis_forced_plan bitbit План помечается как принудительный, когда пользователь выполняет хранимую процедуру sys.sp_query_store_force_plan.Plan is marked as forced when user executes stored procedure sys.sp_query_store_force_plan. Принудительный механизм не гарантирует , что именно этот план будет использоваться для запроса, на который ссылается query_id.Forcing mechanism does not guarantee that exactly this plan will be used for the query referenced by query_id. Форсирование плана вызывает повторную компиляцию запроса и, как правило, создает тот же или аналогичный план для плана, на который ссылается plan_id.Plan forcing causes query to be compiled again and typically produces exactly the same or similar plan to the plan referenced by plan_id. Если форсирование плана не выполняется, force_failure_count увеличивается, а last_force_failure_reason заполняется причиной сбоя.If plan forcing does not succeed, force_failure_count is incremented and last_force_failure_reason is populated with the failure reason.
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
is_natively_compiledis_natively_compiled bitbit План включает оптимизированные для обработки в памяти процедуры.Plan includes natively compiled memory optimized procedures. (0 = FALSE, 1 = TRUE).(0 = FALSE, 1 = TRUE).
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
force_failure_countforce_failure_count bigintbigint Число неудачных попыток принудительного выполнения плана.Number of times that forcing this plan has failed. Его можно увеличить, только если запрос перекомпилируется (не при каждом выполнении).It can be incremented only when the query is recompiled (not on every execution). Он сбрасывается в 0 каждый раз, is_plan_forced меняется с false на true.It is reset to 0 every time is_plan_forced is changed from FALSE to TRUE.
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
last_force_failure_reasonlast_force_failure_reason intint Причина сбоя принудительного применения плана.Reason why plan forcing failed.

0: нет ошибки, в противном случае — номер ошибки, вызвавшей сбой принудительного выполнения0: no failure, otherwise error number of the error that caused the forcing to fail

8637: ONLINE_INDEX_BUILD8637: ONLINE_INDEX_BUILD

8683: INVALID_STARJOIN8683: INVALID_STARJOIN

8684: TIME_OUT8684: TIME_OUT

8689: NO_DB8689: NO_DB

8690: HINT_CONFLICT8690: HINT_CONFLICT

8691: SETOPT_CONFLICT8691: SETOPT_CONFLICT

8694: DQ_NO_FORCING_SUPPORTED8694: DQ_NO_FORCING_SUPPORTED

8698: NO_PLAN8698: NO_PLAN

8712: NO_INDEX8712: NO_INDEX

8713: VIEW_COMPILE_FAILED8713: VIEW_COMPILE_FAILED

<other value>: GENERAL_FAILURE<other value>: GENERAL_FAILURE
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
last_force_failure_reason_desclast_force_failure_reason_desc nvarchar(128)nvarchar(128) Текстовое описание last_force_failure_reason_desc.Textual description of last_force_failure_reason_desc.

ONLINE_INDEX_BUILD: запрос пытается изменить данные, в то время как Целевая таблица имеет индекс, который строится в режиме "в сети"ONLINE_INDEX_BUILD: query tries to modify data while target table has an index that is being built online

INVALID_STARJOIN: Plan содержит недопустимую спецификацию СтаржоинINVALID_STARJOIN: plan contains invalid StarJoin specification

TIME_OUT: оптимизатор превысил количество разрешенных операций при поиске плана, указанного принудительным планомTIME_OUT: Optimizer exceeded number of allowed operations while searching for plan specified by forced plan

NO_DB: база данных, указанная в плане, не существуетNO_DB: A database specified in the plan does not exist

HINT_CONFLICT: не удается скомпилировать запрос, так как возник конфликт плана с указанием запросаHINT_CONFLICT: Query cannot be compiled because plan conflicts with a query hint

DQ_NO_FORCING_SUPPORTED: не удается выполнить запрос, так как планирование конфликтов с использованием распределенных запросов или полнотекстовых операций.DQ_NO_FORCING_SUPPORTED: Cannot execute query because plan conflicts with use of distributed query or full-text operations.

NO_PLAN: обработчику запросов не удалось создать план запроса, так как принудительный план не может быть проверен на допустимость для запросаNO_PLAN: Query processor could not produce query plan because forced plan could not be verified to be valid for the query

NO_INDEX: индекс, указанный в плане, больше не существуетNO_INDEX: Index specified in plan no longer exists

VIEW_COMPILE_FAILED: не удалось принудительно выполнить план запроса из-за проблемы в индексированном представлении, на которое ссылается планVIEW_COMPILE_FAILED: Could not force query plan because of a problem in an indexed view referenced in the plan

GENERAL_FAILURE: Общая ошибка принудительного выполнения (не рассматривается по причинам выше)GENERAL_FAILURE: general forcing error (not covered with reasons above)
Примечание. Azure синапсе Analytics всегда будет возвращать значение None.Note: Azure Synapse Analytics will always return NONE.
count_compilescount_compiles bigintbigint Планирование статистики компиляции.Plan compilation statistics.
initial_compile_start_timeinitial_compile_start_time datetimeoffsetdatetimeoffset Планирование статистики компиляции.Plan compilation statistics.
last_compile_start_timelast_compile_start_time datetimeoffsetdatetimeoffset Планирование статистики компиляции.Plan compilation statistics.
last_execution_timelast_execution_time datetimeoffsetdatetimeoffset Время последнего выполнения ссылается на последнее время окончания запроса или плана.Last execution time refers to the last end time of the query/plan.
avg_compile_durationavg_compile_duration floatfloat Планирование статистики компиляции.Plan compilation statistics.
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
last_compile_durationlast_compile_duration bigintbigint Планирование статистики компиляции.Plan compilation statistics.
Примечание. Azure синапсе Analytics всегда возвращает ноль (0).Note: Azure Synapse Analytics will always return zero (0).
plan_forcing_typeplan_forcing_type intint Тип форсирования плана.Plan forcing type.

0: НЕТ0: NONE

1: ВРУЧНУЮ1: MANUAL

2: АВТО2: AUTO
plan_forcing_type_descplan_forcing_type_desc nvarchar(60)nvarchar(60) Текстовое описание plan_forcing_type.Text description of plan_forcing_type.

Нет: нет форсирования планаNONE: No plan forcing

ВРУЧНУЮ: планирование принудительно пользователемMANUAL: Plan forced by user

AUTO: планирование принудительно по автоматической настройкеAUTO: Plan forced by automatic tuning

Ограничения принудительного использования плановPlan forcing limitations

Хранилище запросов имеет механизм, позволяющий оптимизатору запросов принудительно применить определенный план выполнения.Query Store has a mechanism to enforce Query Optimizer to use certain execution plan. Но существуют некоторые ограничения, которые могут препятствовать применению плана.However, there are some limitations that can prevent a plan to be enforced.

Во-первых, когда план содержит следующие конструкции:First, if the plan contains following constructions:

  • Инструкция INSERT BULK.Insert bulk statement.
  • ссылка на внешнюю таблицу;Reference to an external table
  • распределенный запрос или полнотекстовые операции;Distributed query or full-text operations
  • использование глобальных запросов.Use of Global queries
  • Динамические курсоры или наборы ключейDynamic or keyset cursors
  • Недопустимая спецификация соединения типа "звезда"Invalid star join specification

Примечание

База данных SQL Azure и SQL Server 2019 поддерживают Форсирование планов для статических и быстрых курсоров.Azure SQL Database and SQL Server 2019 support plan forcing for static and fast forward cursors.

Во-вторых, когда объекты, от которых зависит план, больше не доступны:Second, when objects that plan relies on, are no longer available:

  • база данных (если база данных, где план был создан изначально, больше не существует);Database (if Database, where plan originated, does not exist anymore)
  • индекс (больше не существует или отключен).Index (no longer there or disabled)

Наконец, проблемы с самим планом:Finally, problems with the plan itself:

  • недопустим для запроса;Not legal for query
  • оптимизатор запросов превысил количество разрешенных операций;Query Optimizer exceeded number of allowed operations
  • неправильно сформированный XML-код плана.Incorrectly formed plan XML

РазрешенияPermissions

Требуется разрешение View Database State .Requires the VIEW DATABASE STATE permission.

См. также:See Also

sys.database_query_store_options (Transact-SQL) sys.database_query_store_options (Transact-SQL)
sys.query_context_settings (Transact-SQL) sys.query_context_settings (Transact-SQL)
sys.query_store_query (Transact-SQL) sys.query_store_query (Transact-SQL)
sys.query_store_query_text (Transact-SQL) sys.query_store_query_text (Transact-SQL)
sys.query_store_runtime_stats (Transact-SQL) sys.query_store_runtime_stats (Transact-SQL)
sys.query_store_wait_stats (Transact-SQL)sys.query_store_wait_stats (Transact-SQL)
sys.query_store_runtime_stats_interval (Transact-SQL) sys.query_store_runtime_stats_interval (Transact-SQL)
Мониторинг производительности с использованием хранилища запросов Monitoring Performance By Using the Query Store
Представления каталога (Transact-SQL) Catalog Views (Transact-SQL)
Хранимые процедуры хранилища запросов (Transact-SQL)Query Store Stored Procedures (Transact-SQL)