Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Innehåller information om varje körningsplan som är associerad med en fråga.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
plan_id |
bigint | Primär nyckel. |
query_id |
bigint | Sekundärnyckel. Ansluter till sys.query_store_query (Transact-SQL). |
plan_group_id |
bigint | ID för plangruppen. Markören frågor kräver vanligtvis flera (fylla och hämta) planer. Fyll i och hämta planer som kompileras tillsammans finns i samma grupp.0 innebär att planen inte finns i en grupp. |
engine_version |
nvarchar(32) | Version av motorn som används för att kompilera planen i <major>.<minor>.<build>.<revision> format. |
compatibility_level |
smallint | Databaskompatibilitetsnivån för databasen som refereras i frågan. |
query_plan_hash |
binär(8) | MD5-hash för den enskilda planen. |
query_plan |
nvarchar(max) | Showplan XML för frågeplanen. |
is_online_index_plan |
bit | Planen användes under en onlineindexversion. Not: Azure Synapse Analytics returnerar 0alltid . |
is_trivial_plan |
bit | Plan är en trivial plan (utdata i steg 0 i frågeoptimeraren). Not: Azure Synapse Analytics returnerar 0alltid . |
is_parallel_plan |
bit | Planen är parallell. Not: Azure Synapse Analytics returnerar 1alltid . |
is_forced_plan |
bit | Planen markeras som tvingad när användaren kör den lagrade proceduren sys.sp_query_store_force_plan. Den tvingande mekanismen garanterar inte att den här exakta planen används för frågan som refereras av query_id. Plantvingning gör att frågan kompileras igen och producerar vanligtvis exakt samma plan eller en liknande plan som planen som refereras av plan_id. Om planens framtvingande inte lyckas, force_failure_count ökas och last_force_failure_reason fylls i med felorsaken.Not: Azure Synapse Analytics returnerar 0alltid . |
is_natively_compiled |
bit | Planen innehåller internt kompilerade minnesoptimerade procedurer. (0 = FALSE, 1 = TRUE).Not: Azure Synapse Analytics returnerar 0alltid . |
force_failure_count |
bigint | Antal gånger som det har misslyckats att tvinga den här planen. Den kan bara ökas när frågan kompileras om (inte vid varje körning). Återställs till 0 varje gång is_forced_plan ändras från FALSE till TRUE.Not: Azure Synapse Analytics returnerar 0alltid . |
last_force_failure_reason |
int | Orsak till varför planen misslyckades. 0: inget fel, annars felnummer för det fel som orsakade att tvinga att misslyckas 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<annat värde>: GENERAL_FAILURENot: Azure Synapse Analytics returnerar 0alltid . |
last_force_failure_reason_desc |
nvarchar(128) | Textbeskrivning av last_force_failure_reason.COMPILATION_ABORTED_BY_CLIENT: klienten avbröt frågekompilering innan den slutfördesONLINE_INDEX_BUILD: frågan försöker ändra data medan måltabellen har ett index som skapas onlineOPTIMIZATION_REPLAY_FAILED: Det gick inte att köra optimeringsreprisskriptet.INVALID_STARJOIN: planen innehåller ogiltig StarJoin-specifikationTIME_OUT: Optimeraren överskred antalet tillåtna åtgärder vid sökning efter plan som angetts av tvingad planNO_DB: En databas som anges i planen finns inteHINT_CONFLICT: Det går inte att kompilera frågan eftersom planen står i konflikt med ett frågetipsDQ_NO_FORCING_SUPPORTED: Det går inte att köra frågan eftersom planen står i konflikt med användningen av distribuerade frågor eller fulltextåtgärder.NO_PLAN: Frågeprocessorn kunde inte skapa en frågeplan eftersom det inte gick att verifiera den framtvingade planen som giltig för fråganNO_INDEX: Indexet som anges i planen finns inte längreVIEW_COMPILE_FAILED: Det gick inte att tvinga fram en frågeplan på grund av ett problem i en indexerad vy som refereras till i planenGENERAL_FAILURE: allmänt framtvingande fel (omfattas inte av andra orsaker)Not: Azure Synapse Analytics returnerar NONEalltid . |
count_compiles |
bigint | Planera kompileringsstatistik. |
initial_compile_start_time |
datetimeoffset | Planera kompileringsstatistik. |
last_compile_start_time |
datetimeoffset | Planera kompileringsstatistik. |
last_execution_time |
datetimeoffset | Senaste körningstid avser den sista sluttiden för frågan/planen. |
avg_compile_duration |
float | Planera kompileringsstatistik i mikrosekunder. Dividera med 1 000 000 för att få sekunder. |
last_compile_duration |
bigint | Planera kompileringsstatistik i mikrosekunder. Dividera med 1 000 000 för att få sekunder. |
plan_forcing_type |
int |
Gäller för: SQL Server 2017 (14.x) och senare versioner Planera tvingad typ. 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
Gäller för: SQL Server 2017 (14.x) och senare versioner Textbeskrivning av plan_forcing_type.NONE: Ingen plan tvingarMANUAL: Planera framtvingad av användareAUTO: Planera framtvingad av automatisk justering. |
has_compile_replay_script |
bit |
Gäller för: SQL Server 2022 (16.x) och senare versioner Anger om planen har ett optimeringsreprisskript associerat med det: 0 = Inget optimeringsreprisskript (inget eller till och med ogiltigt). 1 = optimeringsreprisskriptet har registrerats. Gäller inte för Azure Synapse Analytics. |
is_optimized_plan_forcing_disabled |
bit |
Gäller för: SQL Server 2022 (16.x) och senare versioner Anger om optimerad plan framtvingning har inaktiverats för planen: 0 = inaktiverad. 1 = inte inaktiverad. Gäller inte för Azure Synapse Analytics. |
plan_type |
int |
Gäller för: SQL Server 2022 (16.x) och senare versioner Plantyp. 0: Kompilerad plan 1: Dispatcher Plan 2: Frågevariantplan Gäller inte för Azure Synapse Analytics. |
plan_type_desc |
nvarchar(120) |
Gäller för: SQL Server 2022 (16.x) och senare versioner Textbeskrivning av plantypen. Kompilerad plan: Anger att planen är en icke-parameterkänslig planoptimerad plan Dispatcher Plan: Anger att planen är en parameterkänslig plan optimerad dispatcher plan Frågevariantplan: Anger att planen är en parameterkänslig plan för optimerad frågevariantplan Gäller inte för Azure Synapse Analytics. |
Anmärkningar
Fler än en plan kan tvingas när Query Store för sekundära repliker är aktiverat.
Om du använder kolumner has_compile_replay_scriptis_optimized_plan_forcing_disabledplan_typeplan_type_desci Azure Synapse Analytics resulterar det i ett Invalid Column Name fel eftersom de inte stöds. Se Exempel B för ett exempel på hur du använder sys.query_store_plan i Azure Synapse Analytics.
Planera framtvingande begränsningar
Query Store har en mekanism för att framtvinga Query Optimizer för att använda en viss körningsplan. Det finns dock vissa begränsningar som kan förhindra att en plan tillämpas.
Först, om planen innehåller följande konstruktioner:
- Infoga massuttryck
- Referens till en extern tabell
- Distribuerade frågor eller fulltextåtgärder
- Användning av elastiska frågor
- Dynamiska markörer eller tangentuppsättningsmarkörer
- Ogiltig specifikation för stjärnkoppling
Anmärkning
Azure SQL Database och SQL Server 2019 och senare versioner stöder plan framtvingande för statiska och snabba framåtmarkörer.
För det andra är objekt som planen förlitar sig på inte längre tillgängliga:
- Databas (om databasen, där planen har sitt ursprung, inte längre finns)
- Index (inte längre där eller inaktiverad)
Slutligen problem med själva planen:
- Inte lagligt för fråga
- Frågeoptimeraren överskred antalet tillåtna åtgärder
- Felaktigt utformad plan-XML
Permissions
Kräver behörigheten VIEW DATABASE STATE .
Examples
A. Hitta orsaken till att SQL Server inte kunde tvinga fram en plan via QDS
Var uppmärksam på kolumnerna last_force_failure_reason_desc och 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. Fråga för att visa frågeplansresultat i Azure Synapse Analytics
Använd följande exempelfråga för att hitta de 100 senaste körningsplanerna i Query Store i 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;
Relaterat innehåll
- Övervaka prestanda med hjälp av Query Store
- 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)
- Systemkatalogvyer (Transact-SQL)
- Lagrade procedurer för Query Store (Transact-SQL)