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

Si applica a:Applies to: sìSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) e versioni successive Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse AnalyticsSi applica a:Applies to: sìSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database SìIstanza gestita di SQL di AzureAzure SQL Managed InstanceYesIstanza gestita di SQL di AzureAzure SQL Managed Instance sìAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

Contiene informazioni su ogni piano di esecuzione associato a una query.Contains information about each execution plan associated with a query.

Nome colonnaColumn name Tipo di datiData type DescrizioneDescription
plan_idplan_id bigintbigint Chiave primaria.Primary key.
query_idquery_id bigintbigint Chiave esterna.Foreign key. Si unisce a sys.query_store_query ()Transact-SQL .Joins to sys.query_store_query (Transact-SQL).
plan_group_idplan_group_id bigintbigint ID del gruppo di piani.ID of the plan group. Per le query di cursori sono in genere necessari più piani (popolamento e recupero).Cursor queries typically require multiple (populate and fetch) plans. Popolare e recuperare i piani compilati insieme si trovano nello stesso gruppo.Populate and fetch plans that are compiled together are in the same group.

0 indica che il piano non è in un gruppo.0 means plan is not in a group.
engine_versionengine_version nvarchar(32)nvarchar(32) Versione del motore utilizzata per compilare il piano nel formato ' Major. minor. Build. Revision ' .Version of the engine used to compile the plan in 'major.minor.build.revision' format.
compatibility_levelcompatibility_level smallintsmallint Livello di compatibilità del database a cui si fa riferimento nella query.Database compatibility level of the database referenced in the query.
query_plan_hashquery_plan_hash binario (8)binary(8) Hash MD5 del piano singolo.MD5 hash of the individual plan.
query_planquery_plan nvarchar(max)nvarchar(max) Showplan XML per il piano di query.Showplan XML for the query plan.
is_online_index_planis_online_index_plan bitbit Il piano è stato usato durante la compilazione di un indice online.Plan was used during an online index build.
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
is_trivial_planis_trivial_plan bitbit Il piano è un piano semplice (output nella fase 0 di Query Optimizer).Plan is a trivial plan (output in stage 0 of query optimizer).
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
is_parallel_planis_parallel_plan bitbit Il piano è parallelo.Plan is parallel.
Nota: Azure sinapsi Analytics restituirà sempre uno (1).Note: Azure Synapse Analytics will always return one (1).
is_forced_planis_forced_plan bitbit Il piano è contrassegnato come forzato quando l'utente esegue stored procedure sys.sp_query_store_force_plan.Plan is marked as forced when user executes stored procedure sys.sp_query_store_force_plan. Il meccanismo di forzatura non garantisce che venga utilizzato esattamente questo piano per la query a cui fa riferimento query_id.Forcing mechanism does not guarantee that exactly this plan will be used for the query referenced by query_id. L'utilizzo forzato del piano determina la compilazione di una query e in genere produce esattamente lo stesso piano o simile al piano a cui fa riferimento 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. Se l'utilizzo forzato del piano ha esito negativo, force_failure_count viene incrementato e last_force_failure_reason viene popolato con il motivo dell'errore.If plan forcing does not succeed, force_failure_count is incremented and last_force_failure_reason is populated with the failure reason.
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
is_natively_compiledis_natively_compiled bitbit Il piano include procedure con ottimizzazione per la memoria compilate in modo nativo.Plan includes natively compiled memory optimized procedures. (0 = FALSE, 1 = TRUE).(0 = FALSE, 1 = TRUE).
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
force_failure_countforce_failure_count bigintbigint Numero di volte in cui il piano forzato non è riuscito.Number of times that forcing this plan has failed. Può essere incrementato solo quando la query viene ricompilata (non a ogni esecuzione).It can be incremented only when the query is recompiled (not on every execution). Viene reimpostato su 0 ogni volta che is_plan_forced viene modificato da false a true.It is reset to 0 every time is_plan_forced is changed from FALSE to TRUE.
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
last_force_failure_reasonlast_force_failure_reason intint Motivo per cui la forzatura del piano non è riuscita.Reason why plan forcing failed.

0: nessun errore. in caso contrario, numero di errore dell'errore che ha causato l'esito negativo della forzatura0: 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
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
last_force_failure_reason_desclast_force_failure_reason_desc nvarchar(128)nvarchar(128) Descrizione testuale del last_force_failure_reason_desc.Textual description of last_force_failure_reason_desc.

ONLINE_INDEX_BUILD: la query tenta di modificare i dati mentre la tabella di destinazione include un indice compilato onlineONLINE_INDEX_BUILD: query tries to modify data while target table has an index that is being built online

INVALID_STARJOIN: il piano contiene una specifica StarJoin non validaINVALID_STARJOIN: plan contains invalid StarJoin specification

TIME_OUT: l'ottimizzatore ha superato il numero di operazioni consentite durante la ricerca del piano specificato dal piano forzatoTIME_OUT: Optimizer exceeded number of allowed operations while searching for plan specified by forced plan

NO_DB: un database specificato nel piano non esisteNO_DB: A database specified in the plan does not exist

HINT_CONFLICT: non è possibile compilare la query perché il piano è in conflitto con un hint per la queryHINT_CONFLICT: Query cannot be compiled because plan conflicts with a query hint

DQ_NO_FORCING_SUPPORTED: non è possibile eseguire la query perché il piano è in conflitto con l'utilizzo di query distribuite o di operazioni full-text.DQ_NO_FORCING_SUPPORTED: Cannot execute query because plan conflicts with use of distributed query or full-text operations.

NO_PLAN: query processor non è in grado di generare il piano di query perché non è stato possibile verificare che il piano forzato sia valido per la queryNO_PLAN: Query processor could not produce query plan because forced plan could not be verified to be valid for the query

NO_INDEX: l'indice specificato nel piano non esiste piùNO_INDEX: Index specified in plan no longer exists

VIEW_COMPILE_FAILED: non è stato possibile forzare il piano di query a causa di un problema in una vista indicizzata a cui si fa riferimento nel pianoVIEW_COMPILE_FAILED: Could not force query plan because of a problem in an indexed view referenced in the plan

GENERAL_FAILURE: errore forzato generale (non trattato con i motivi precedenti)GENERAL_FAILURE: general forcing error (not covered with reasons above)
Nota: Analisi delle sinapsi di Azure restituirà sempre None.Note: Azure Synapse Analytics will always return NONE.
count_compilescount_compiles bigintbigint Pianificare le statistiche di compilazione.Plan compilation statistics.
initial_compile_start_timeinitial_compile_start_time datetimeoffsetdatetimeoffset Pianificare le statistiche di compilazione.Plan compilation statistics.
last_compile_start_timelast_compile_start_time datetimeoffsetdatetimeoffset Pianificare le statistiche di compilazione.Plan compilation statistics.
last_execution_timelast_execution_time datetimeoffsetdatetimeoffset L'ora dell'ultima esecuzione fa riferimento all'ora dell'ultima fine della query o del piano.Last execution time refers to the last end time of the query/plan.
avg_compile_durationavg_compile_duration floatfloat Pianificare le statistiche di compilazione.Plan compilation statistics.
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
last_compile_durationlast_compile_duration bigintbigint Pianificare le statistiche di compilazione.Plan compilation statistics.
Nota: Analisi delle sinapsi di Azure restituirà sempre zero (0).Note: Azure Synapse Analytics will always return zero (0).
plan_forcing_typeplan_forcing_type intint Tipo di forzatura del piano.Plan forcing type.

0: NESSUNA0: NONE

1: MANUALE1: MANUAL

2: AUTO2: AUTO
plan_forcing_type_descplan_forcing_type_desc nvarchar(60)nvarchar(60) Descrizione del testo plan_forcing_type.Text description of plan_forcing_type.

NONE: nessuna forzatura del pianoNONE: No plan forcing

MANUALE: piano forzato dall'utenteMANUAL: Plan forced by user

AUTOMATICO: piano forzato dall'ottimizzazione automaticaAUTO: Plan forced by automatic tuning

Limitazioni per l'uso forzato dei pianiPlan forcing limitations

Query Store è dotato di un meccanismo per imporre a Query Optimizer l'uso di determinati piani di esecuzione.Query Store has a mechanism to enforce Query Optimizer to use certain execution plan. Esistono tuttavia alcune limitazioni che possono impedire l'imposizione di un piano.However, there are some limitations that can prevent a plan to be enforced.

In primo luogo, se il piano contiene i costrutti seguenti:First, if the plan contains following constructions:

  • Istruzione Insert bulk.Insert bulk statement.
  • Riferimento a una tabella esternaReference to an external table
  • Query distribuita o operazioni full-textDistributed query or full-text operations
  • Uso di query globaliUse of Global queries
  • Cursori dinamici o keysetDynamic or keyset cursors
  • Specifica di join a stella non validaInvalid star join specification

Nota

Il database SQL di Azure e il piano di supporto SQL Server 2019 forzano i cursori statici e veloci.Azure SQL Database and SQL Server 2019 support plan forcing for static and fast forward cursors.

In secondo luogo, quando gli oggetti su cui si basa il piano non sono più disponibili:Second, when objects that plan relies on, are no longer available:

  • Database (se il database da cui ha avuto origine il piano non esiste più)Database (if Database, where plan originated, does not exist anymore)
  • Indice (non più esistente o disabilitato)Index (no longer there or disabled)

Infine, problemi del piano stesso:Finally, problems with the plan itself:

  • Piano non valido per queryNot legal for query
  • Numero di operazioni consentite per Query Optimizer superatoQuery Optimizer exceeded number of allowed operations
  • XML del piano formato in modo non correttoIncorrectly formed plan XML

AutorizzazioniPermissions

È richiesta l'autorizzazione View database state .Requires the VIEW DATABASE STATE permission.

Vedere ancheSee 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)
Monitoraggio delle prestazioni tramite Archivio query Monitoring Performance By Using the Query Store
Viste del catalogo (Transact-SQL) Catalog Views (Transact-SQL)
Stored procedure di Query Store (Transact-SQL)Query Store Stored Procedures (Transact-SQL)