Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2016 (13.x) a nowše verzie
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database in Microsoft Fabric
Obsahuje informace o každém plánu provádění přidruženém k dotazu.
| Název sloupce | Datový typ | Description |
|---|---|---|
plan_id |
bigint | Primární klíč. |
query_id |
bigint | Cizí klíč. Spojí se s sys.query_store_query (Transact-SQL). |
plan_group_id |
bigint | ID skupiny plánů. Dotazy kurzoru obvykle vyžadují více (naplnit a načíst) plány. Naplňte a načtěte plány, které jsou kompilovány společně, jsou ve stejné skupině.0 znamená, že plán není ve skupině. |
engine_version |
nvarchar(32) | Verze modulu použitého ke kompilaci plánu ve <major>.<minor>.<build>.<revision> formátu. |
compatibility_level |
smallint | Úroveň kompatibility databáze odkazované v dotazu. |
query_plan_hash |
binární(8) | Hodnota hash MD5 individuálního plánu |
query_plan |
nvarchar(max) | Showplan XML pro plán dotazu. |
is_online_index_plan |
bit | Plán byl použit během online sestavení indexu. Poznámka: Azure Synapse Analytics vždy vrací 0. |
is_trivial_plan |
bit | Plán je triviální plán (výstup ve fázi 0 optimalizátoru dotazů). Poznámka: Azure Synapse Analytics vždy vrací 0. |
is_parallel_plan |
bit | Plán je paralelní. Poznámka: Azure Synapse Analytics vždy vrací 1. |
is_forced_plan |
bit | Plán je označen jako vynucený, když uživatel spustí uloženou proceduru sys.sp_query_store_force_plan. Mechanismus vynucení nezaručuje , že se tento přesný plán použije pro dotaz, na který query_idodkazuje . Vynucení plánu způsobí opětovné kompilaci dotazu a obvykle vytvoří přesně stejný nebo podobný plán plánu, na který plan_idodkazuje . Pokud plánování nebude úspěšné, force_failure_count zvýší se a last_force_failure_reason naplní se důvodem selhání.Poznámka: Azure Synapse Analytics vždy vrací 0. |
is_natively_compiled |
bit | Plán zahrnuje nativně kompilované procedury optimalizované pro paměť. (0 = FALSE, 1 = TRUE).Poznámka: Azure Synapse Analytics vždy vrací 0. |
force_failure_count |
bigint | Počet selhání vynucení tohoto plánu Může se zvýšit pouze v případech, kdy je dotaz rekompilován (ne při každém spuštění). Obnoví se pokaždé 0 , když is_forced_plan se změní z FALSE na TRUE.Poznámka: Azure Synapse Analytics vždy vrací 0. |
last_force_failure_reason |
int | Důvod, proč plánování vynucování selhalo 0: žádné selhání, jinak číslo chyby, která způsobila selhání vynucení 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<jiná hodnota>: GENERAL_FAILUREPoznámka: Azure Synapse Analytics vždy vrací 0. |
last_force_failure_reason_desc |
nvarchar(128) | Textový popis .last_force_failure_reasonCOMPILATION_ABORTED_BY_CLIENT: Kompilace dotazu přerušena klientem před dokončenímONLINE_INDEX_BUILD: Dotaz se pokusí upravit data, zatímco cílová tabulka má index, který se sestavuje online.OPTIMIZATION_REPLAY_FAILED: Skript pro přehrání optimalizace se nepodařilo spustit.INVALID_STARJOIN: Plán obsahuje neplatnou specifikaci StarJoinTIME_OUT: Optimalizátor překročil počet povolených operací při hledání plánu určeného vynuceným plánem.NO_DB: Databáze zadaná v plánu neexistuje.HINT_CONFLICT: Dotaz nejde zkompilovat, protože plán je v konfliktu s nápovědou dotazu.DQ_NO_FORCING_SUPPORTED: Dotaz nejde spustit, protože plán je v konfliktu s použitím distribuovaných dotazů nebo fulltextových operací.NO_PLAN: Procesor dotazů nemohl vytvořit plán dotazu, protože vynucený plán nelze ověřit jako platný pro dotaz.NO_INDEX: Index zadaný v plánu již neexistuje.VIEW_COMPILE_FAILED: Plán dotazu se nepovedlo vynutit kvůli problému v indexovaném zobrazení odkazovaném v plánu.GENERAL_FAILURE: Obecná chyba vynucení (nezabíraná jinými důvody)Poznámka: Azure Synapse Analytics vždy vrací NONE. |
count_compiles |
bigint | Plánování statistik kompilace |
initial_compile_start_time |
datetimeoffset | Plánování statistik kompilace |
last_compile_start_time |
datetimeoffset | Plánování statistik kompilace |
last_execution_time |
datetimeoffset | Čas posledního spuštění odkazuje na poslední koncový čas dotazu nebo plánu. |
avg_compile_duration |
float | Plánování statistik kompilace v mikrosekundách Vydělte 1 000 000 sekund. |
last_compile_duration |
bigint | Plánování statistik kompilace v mikrosekundách Vydělte 1 000 000 sekund. |
plan_forcing_type |
int |
Platí pro: SQL Server 2017 (14.x) a novější verze Typ vynucení plánování 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
Platí pro: SQL Server 2017 (14.x) a novější verze Textový popis . plan_forcing_typeNONE: Žádné vynucení plánuMANUAL: Plánování vynucené uživatelemAUTO: Plánování vynucené automatickým laděním. |
has_compile_replay_script |
bit |
Platí pro: SQL Server 2022 (16.x) a novější verze Určuje, jestli má plán přidružený skript pro přehrání optimalizace: 0 = Žádný skript pro přehrání optimalizace (žádný nebo dokonce neplatný). 1 = zaznamenaný skript pro přehrání optimalizace Nevztahuje se na Azure Synapse Analytics. |
is_optimized_plan_forcing_disabled |
bit |
Platí pro: SQL Server 2022 (16.x) a novější verze Určuje, jestli byl optimalizovaný plán vynucení pro plán zakázaný: 0 = zakázáno. 1 = není zakázáno. Nevztahuje se na Azure Synapse Analytics. |
plan_type |
int |
Platí pro: SQL Server 2022 (16.x) a novější verze Typ plánu 0: Kompilovaný plán 1: Plán dispečera 2: Plán variant dotazu Nevztahuje se na Azure Synapse Analytics. |
plan_type_desc |
nvarchar(120) |
Platí pro: SQL Server 2022 (16.x) a novější verze Textový popis typu plánu. Zkompilovaný plán: Označuje, že plán je neparametrový plán optimalizovaný pro jiný než parametr. Plán dispečeru: Označuje, že plán je plán optimalizovaný pro plán optimalizovaný pro parametr. Plán variant dotazu: Označuje, že plán je plán optimalizovaný pro variantu dotazu optimalizovaný pro parametry. Nevztahuje se na Azure Synapse Analytics. |
Poznámky
Pokud je povolené úložiště dotazů pro sekundární repliky , může být vynuceno více než jeden plán.
Ve službě Azure Synapse Analytics při použití sloupců has_compile_replay_scriptis_optimized_plan_forcing_disabled, plan_typeplan_type_descdojde k Invalid Column Name chybě, protože nejsou podporované. Příklad použití ve službě Azure Synapse Analytics najdete v příkladusys.query_store_plan B.
Omezení vynucení plánování
Úložiště dotazů má mechanismus pro vynucení optimalizátoru dotazů pro použití určitého plánu provádění. Existují však určitá omezení, která mohou zabránit vynucení plánu.
Za prvé, pokud plán obsahuje následující konstrukce:
- Vložit hromadný příkaz
- Odkaz na externí tabulku
- Distribuované operace dotazů nebo fulltextových operací
- Použití elastických dotazů
- Dynamické kurzory nebo kurzory sady kláves
- Neplatná specifikace spojení hvězd
Poznámka:
Azure SQL Database a SQL Server 2019 a novější verze sestavení podporují plán vynucení statických a rychlých kurzorů vpřed.
Za druhé, pokud objekty, na které se plán spoléhá, už nejsou k dispozici:
- Databáze (pokud databáze, kde plán pochází, už neexistuje)
- Index (už tam nebo není zakázaný)
A konečně problémy se samotným plánem:
- Není pro dotaz z právních důvodů
- Optimalizátor dotazů překročil počet povolených operací
- Nesprávně vytvořený plán XML
Povolení
VIEW DATABASE STATE Vyžaduje oprávnění.
Examples
A. Zjištění důvodu, proč SQL Server nemohl vynutit plán přes QDS
Věnujte pozornost sloupcůmlast_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. Dotaz na zobrazení výsledků plánu dotazů ve službě Azure Synapse Analytics
Pomocí následujícího ukázkového dotazu vyhledejte 100 nejnovějších plánů provádění v úložišti dotazů ve službě 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;
Související obsah
- Monitorování výkonu s využitím úložiště dotazů
- 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)
- Zobrazení systémového katalogu (Transact-SQL)
- uložené procedury úložiště dotazů (Transact-SQL)