Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Az SQL Server 2016 (13.x) és újabb verziói
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Database a Microsoft Fabricben
A lekérdezéshez társított végrehajtási tervekkel kapcsolatos információkat tartalmaz.
| Oszlop név | Adattípus | Description |
|---|---|---|
plan_id |
bigint | Elsődleges kulcs. |
query_id |
bigint | Idegen kulcs. Csatlakozás a sys.query_store_query (Transact-SQL)-hoz. |
plan_group_id |
bigint | A tervcsoport azonosítója. A kurzorlekérdezések általában több (feltöltési és beolvasási) csomagot igényelnek. Az együtt összeállított csomagok feltöltése és beolvasása ugyanabban a csoportban található.0 azt jelenti, hogy a terv nem egy csoportban van. |
engine_version |
nvarchar(32) | A terv <major>.<minor>.<build>.<revision> formátumba fordításához használt motor verziója. |
compatibility_level |
smallint | A lekérdezésben hivatkozott adatbázis adatbáziskompatibilitási szintje. |
query_plan_hash |
bináris(8) | Az egyes terv MD5 kivonata. |
query_plan |
nvarchar(max) | Showplan XML a lekérdezési tervhez. |
is_online_index_plan |
bit | A tervet egy online index összeállítása során használták. Jegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
is_trivial_plan |
bit | A terv egy triviális terv (a lekérdezésoptimalizáló 0. szakaszának kimenete). Jegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
is_parallel_plan |
bit | A terv párhuzamos. Jegyzet: Az Azure Synapse Analytics mindig visszatér 1. |
is_forced_plan |
bit | A rendszer kényszerítettként jelöli meg a tervet, amikor a felhasználó végrehajtja a tárolt eljárást sys.sp_query_store_force_plan. Az kényszerítési mechanizmus nem garantálja , hogy ez a pontos terv lesz használva a hivatkozott query_idlekérdezéshez. A terv kényszerítése miatt a lekérdezés újrafordításra kerül, és általában pontosan ugyanazt vagy hasonló tervet hoz létre, mint a hivatkozott plan_idterv. Ha a terv kényszerítése nem sikerül, force_failure_count a rendszer növekszik, és last_force_failure_reason a hiba okával van feltöltve.Jegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
is_natively_compiled |
bit | A terv natívan lefordított, memóriaoptimalizált eljárásokat tartalmaz. (0 = FALSE, 1 = TRUE).Jegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
force_failure_count |
bigint | A terv kényszerítésének hányszor volt sikertelen. Csak akkor növelhető, ha a lekérdezés újrafordítása történik (nem minden végrehajtás során). A rendszer minden alkalommal 0 alaphelyzetbe állítja is_forced_plan a FALSE beállításokatTRUE.Jegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
last_force_failure_reason |
int | A terv kényszerítésének oka. 0: nincs hiba, ellenkező esetben a hiba száma, amely miatt a kényszerítés meghiúsult 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<egyéb érték>: GENERAL_FAILUREJegyzet: Az Azure Synapse Analytics mindig visszatér 0. |
last_force_failure_reason_desc |
nvarchar(128) | A parancs szöveges leírása last_force_failure_reason.COMPILATION_ABORTED_BY_CLIENT: az ügyfél megszakította a lekérdezés fordítását, mielőtt befejeződött volnaONLINE_INDEX_BUILD: a lekérdezés megpróbálja módosítani az adatokat, miközben a céltábla indexe online készültOPTIMIZATION_REPLAY_FAILED: Az optimalizálási visszajátszási szkript végrehajtása nem sikerült.INVALID_STARJOIN: a terv érvénytelen StarJoin-specifikációt tartalmazTIME_OUT: Az optimalizáló túllépte az engedélyezett műveletek számát a kényszerített terv által megadott terv keresésekorNO_DB: A tervben megadott adatbázis nem létezikHINT_CONFLICT: A lekérdezés nem fordítható le, mert a terv ütközik egy lekérdezési tipptelDQ_NO_FORCING_SUPPORTED: Nem lehet lekérdezést végrehajtani, mert a terv ütközik az elosztott lekérdezés vagy a teljes szöveges műveletek használatával.NO_PLAN: A lekérdezésfeldolgozó nem tudott lekérdezési tervet létrehozni, mert a kényszerített terv nem ellenőrizhető érvényesként a lekérdezéshezNO_INDEX: A tervben megadott index már nem létezikVIEW_COMPILE_FAILED: A tervben hivatkozott indexelt nézetben észlelt probléma miatt nem sikerült kikényszeríteni a lekérdezéstervetGENERAL_FAILURE: általános kényszerítési hiba (más okokkal nem foglalkozik)Jegyzet: Az Azure Synapse Analytics mindig visszatér NONE. |
count_compiles |
bigint | Összeállítási statisztikák tervezése. |
initial_compile_start_time |
datetimeoffset | Összeállítási statisztikák tervezése. |
last_compile_start_time |
datetimeoffset | Összeállítási statisztikák tervezése. |
last_execution_time |
datetimeoffset | A legutóbbi végrehajtási idő a lekérdezés/terv utolsó befejezési időpontjára vonatkozik. |
avg_compile_duration |
float | Fordítási statisztikák tervezése mikroszekundumokban. Oszd el 1 000 000-sel a másodpercekért. |
last_compile_duration |
bigint | Fordítási statisztikák tervezése mikroszekundumokban. Oszd el 1 000 000-sel a másodpercekért. |
plan_forcing_type |
int |
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók Terv típusú kényszerítés. 0: NONE1: MANUAL2: AUTO |
plan_forcing_type_desc |
nvarchar(60) |
A következőkre vonatkozik: SQL Server 2017 (14.x) és újabb verziók A szöveg leírása plan_forcing_type.NONE: Nincs terv kényszerítéseMANUAL: Felhasználó által kényszerített tervAUTO: Automatikus hangolással kényszerített terv. |
has_compile_replay_script |
bit |
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók Azt jelzi, hogy a terv rendelkezik-e optimalizálási visszajátszási szkripttel: 0 = Nincs optimalizálási visszajátszási szkript (nincs vagy érvénytelen). 1 = optimalizálási visszajátszási szkript rögzítve. Nem alkalmazható az Azure Synapse Analyticsre. |
is_optimized_plan_forcing_disabled |
bit |
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók Azt jelzi, hogy az optimalizált terv kényszerítése le lett-e tiltva a tervhez: 0 = le van tiltva. 1 = nincs letiltva. Nem alkalmazható az Azure Synapse Analyticsre. |
plan_type |
int |
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók Terv típusa. 0: Összeállított terv 1: Diszpécser terv 2: Lekérdezésvariáns-terv Nem alkalmazható az Azure Synapse Analyticsre. |
plan_type_desc |
nvarchar(120) |
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók A tervtípus szöveges leírása. Lefordított terv: Azt jelzi, hogy a terv nem paraméterérzékeny, optimalizált terv Diszpécsercsomag: Azt jelzi, hogy a terv egy paraméterérzékeny, optimalizált diszpécsercsomag Lekérdezésvariáns-terv: Azt jelzi, hogy a terv egy paraméterérzékeny, optimalizált lekérdezésvariáns terv Nem alkalmazható az Azure Synapse Analyticsre. |
Megjegyzések
Egynél több csomag kényszeríthető, ha a másodlagos replikák lekérdezéstára engedélyezve van.
Az Azure Synapse Analyticsben az oszlopok has_compile_replay_scriptis_optimized_plan_forcing_disabledplan_typehasználata hibát eredményezplan_type_desc, Invalid Column Name mivel azok nem támogatottak. Az Azure Synapse Analyticsben való használatra példa a sys.query_store_plan található.
Korlátozások megtervezése
A Lekérdezéstár olyan mechanizmussal rendelkezik, amely kényszeríti a Lekérdezésoptimalizálót bizonyos végrehajtási terv használatára. Vannak azonban bizonyos korlátozások, amelyek megakadályozhatják a terv kikényszerítését.
Először is, ha a terv a következő szerkezeteket tartalmazza:
- Tömeges utasítás beszúrása
- Hivatkozás külső táblára
- Elosztott lekérdezési vagy teljes szöveges műveletek
- Rugalmas lekérdezések használata
- Dinamikus vagy billentyűkészlet-kurzorok
- Érvénytelen csillagillesztési specifikáció
Megjegyzés:
Az Azure SQL Database és az SQL Server 2019 és újabb buildverziói támogatják a statikus és gyors kurzorokra való kényszerítést.
Másodszor, ha a terv alapjául szolgáló objektumok már nem érhetők el:
- Adatbázis (ha az adatbázis, ahonnan a terv származik, már nem létezik)
- Index (már nincs ott vagy le van tiltva)
Végül a tervvel kapcsolatos problémák:
- Nem legális a lekérdezés
- A Lekérdezésoptimalizáló túllépte az engedélyezett műveletek számát
- Helytelenül formázott terv XML-fájlja
Permissions
VIEW DATABASE STATE Engedélyre van szükség.
Példák
A. Annak megkeresése, hogy az SQL Server miért nem tudta kikényszeríteni a tervet a QDS-en keresztül
Figyeljen az oszlopokra és last_force_failure_reason_desc az oszlopokraforce_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. Lekérdezés a lekérdezésterv eredményeinek megtekintéséhez az Azure Synapse Analyticsben
Az alábbi minta lekérdezéssel megtalálhatja a 100 legutóbbi végrehajtási tervet az Azure Synapse Analytics lekérdezéstárában.
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;
Kapcsolódó tartalom
- A teljesítmény figyelése a Lekérdezéstár segítségével
- 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)
- Rendszerkatalógus nézetei (Transact-SQL)
- Lekérdezéstár tárolt eljárásai (Transact-SQL)