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í pro: SQL Server 2019 (15.x) a novější verze
Databáze Azure SQL Database
Azure SQL Managed Instance
SQL v Microsoft Fabric
Vrátí ekvivalent posledního známého skutečného plánu provádění pro dříve uložený plán dotazu v mezipaměti.
Syntaxe
sys.dm_exec_query_plan_stats ( plan_handle )
Arguments
plan_handle
Token, který jednoznačně identifikuje plán provádění dotazů pro dávku, která se spustila, a její plán se nachází v mezipaměti plánu nebo se právě spouští. plan_handle je varbinary(64).
Plan_handle lze získat z následujících objektů dynamické správy:
- sys.dm_exec_cached_plans
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_procedure_stats
- sys.dm_exec_trigger_stats
Vrácená tabulka
| Název sloupce | Datový typ | Description |
|---|---|---|
dbid |
smallint | ID kontextové databáze, která se projevila při kompilaci příkazu Transact-SQL odpovídající tomuto plánu. Pro ad hoc a připravené příkazy SQL ID databáze, ve které byly příkazy zkompilovány. Sloupec je nullable. |
objectid |
int | ID objektu (například uložená procedura nebo uživatelem definovaná funkce) pro tento plán dotazu. Pro ad hoc a připravené dávky má tento sloupec hodnotu null. Sloupec je nullable. |
number |
smallint | Celé číslo očíslované uložené procedury. Například skupina postupů pro orders aplikaci může mít název orderproc;1, orderproc;2atd. Pro ad hoc a připravené dávky má tento sloupec hodnotu null.Sloupec je nullable. |
encrypted |
bit | Určuje, jestli je odpovídající uložená procedura zašifrovaná. 0 = nezašifrováno 1 = šifrované Sloupec není nullable. |
query_plan |
xml | Obsahuje poslední známou reprezentaci plánu spuštění dotazu, který je zadaný pomocí plan_handle. Showplan je ve formátu XML. Jeden plán se vygeneruje pro každou dávku, která obsahuje například ad hoc příkazy Transact-SQL, volání uložených procedur a volání funkcí definovaná uživatelem. Sloupec je nullable. |
Poznámky
Toto je funkce výslovného souhlasu. Pokud chcete povolit na úrovni serveru, použijte příznak trasování 2451. Pokud chcete povolit na úrovni databáze, použijte LAST_QUERY_PLAN_STATS možnost v konfiguraci ALTER DATABASE SCOPED.
Tato systémová funkce funguje ve zjednodušené infrastruktuře profilace statistik provádění dotazů. Pro více informací, viz Infrastruktura profilování dotazů.
Výstup sys.dm_exec_query_plan_stats Showplan obsahuje následující informace:
Všechny informace o čase kompilace nalezené v plánu uloženém v mezipaměti
Informace o modulu runtime, jako je skutečný počet řádků na operátor, celkový čas procesoru dotazů a doba provádění, upozornění na přelití, skutečný dop, maximální využitá paměť a udělená paměť
Za následujících podmínek se ve sloupci vrácené tabulky vrátí výstup Showplan query_plan prosys.dm_exec_query_plan_stats:
Plán najdete v sys.dm_exec_cached_plans.
a
Spouštěný dotaz je složitý nebo spotřeba prostředků.
Za následujících podmínek se ve sloupci vrácené tabulky vrátí zjednodušený výstup query_plan Showplan prosys.dm_exec_query_plan_stats:
Plán najdete v sys.dm_exec_cached_plans.
a
Dotaz je dostatečně jednoduchý, obvykle zařazený do kategorií jako součást úlohy OLTP.
1 Odkazuje na showplan, který obsahuje pouze operátor kořenového uzlu (SELECT).
Za následujících podmínek se nevrátí žádný výstup:sys.dm_exec_query_plan_stats
Plán dotazu určený použitím
plan_handlebyl vyřazen z mezipaměti plánu.nebo
Plán dotazu se nedá uložit do mezipaměti na prvním místě. Další informace najdete v tématu Ukládání do mezipaměti a opětovné použití plánu provádění.
Poznámka:
Omezení počtu vnořených úrovní povolených v datovém typu XML znamená, že sys.dm_exec_query_plan nelze vracet plány dotazů, které splňují nebo překračují 128 úrovní vnořených prvků. V dřívějších verzích SQL Serveru tato podmínka zabránila vrácení plánu dotazu a vygenerování chyby 6335. V systému SQL Server 2005 (9.x) Service Pack 2 a novějších verzích query_plan vrátí NULLsloupec .
Povolení
SQL Server 2019 (15.x) a starší verze vyžadují VIEW SERVER STATE oprávnění k serveru.
SQL Server 2022 (16.x) a novější verze vyžadují VIEW SERVER PERFORMANCE STATE oprávnění k serveru.
Examples
A. Podívejte se na poslední známý skutečný plán provádění dotazů pro konkrétní plán uložený v mezipaměti.
Následující ukázkové sys.dm_exec_cached_plans dotazy najdou zajímavý plán a zkopírují ho plan_handle z výstupu.
SELECT * FROM sys.dm_exec_cached_plans;
GO
Potom k získání posledního známého skutečného plánu provádění dotazu použijte zkopírovanou plan_handle s systémovou funkcí sys.dm_exec_query_plan_stats.
SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);
GO
B. Podívejte se na poslední známý skutečný plán provádění dotazů pro všechny plány v mezipaměti.
SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps;
GO
C. Podívejte se na poslední známý skutečný plán provádění dotazů pro konkrétní plán uložený v mezipaměti a text dotazu.
SELECT * FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle) AS qps
WHERE st.text LIKE 'SELECT * FROM Person.Person%';
GO
D. Podívejte se na události uložené v mezipaměti pro trigger
SELECT * FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype = 'Trigger';
GO
Související obsah
- Nastavení příznaků trasování pomocí DBCC TRACEON (Transact-SQL)
- zobrazení dynamické správy systému
- zobrazení a funkce související se spouštěním dynamické správy (Transact-SQL)