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 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
Returnerar motsvarigheten till den senast kända faktiska körningsplanen för en tidigare cachelagrad frågeplan.
Syntax
sys.dm_exec_query_plan_stats ( plan_handle )
Arguments
plan_handle
En token som unikt identifierar en frågekörningsplan för en batch som har körts och dess plan finns i plancachen eller körs för närvarande. plan_handle är varbinary(64).
Plan_handle kan hämtas från följande dynamiska hanteringsobjekt:
- sys.dm_exec_cached_plans
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_procedure_stats
- sys.dm_exec_trigger_stats
Tabellen returnerades
| Kolumnnamn | Datatyp | Description |
|---|---|---|
dbid |
smallint | ID för kontextdatabasen som var i kraft när Transact-SQL-instruktionen som motsvarar den här planen kompilerades. För ad hoc- och förberedda SQL-instruktioner kompilerades ID:t för databasen där -uttrycken kompilerades. Kolumnen är null. |
objectid |
int | ID för objektet (till exempel lagrad procedur eller användardefinierad funktion) för den här frågeplanen. För ad hoc- och förberedda batchar är den här kolumnen null. Kolumnen är null. |
number |
smallint | Numrerat heltal för lagrad procedur. En grupp procedurer för orders programmet kan till exempel ha namnet orderproc;1, orderproc;2och så vidare. För ad hoc- och förberedda batchar är den här kolumnen null.Kolumnen är null. |
encrypted |
bit | Anger om motsvarande lagrade procedur är krypterad. 0 = inte krypterad 1 = krypterad Kolumnen kan inte vara null. |
query_plan |
xml | Innehåller den senaste kända showplansrepresentationen av den faktiska frågekörningsplanen som har angetts med plan_handle. Showplan är i XML-format. En plan genereras för varje batch som innehåller till exempel ad hoc-Transact-SQL-instruktioner, lagrade proceduranrop och användardefinierade funktionsanrop. Kolumnen är null. |
Anmärkningar
Det här är en opt-in-funktion. Om du vill aktivera på servernivå använder du spårningsflagga 2451. Om du vill aktivera på databasnivå använder du LAST_QUERY_PLAN_STATS alternativet i ALTER DATABASE SCOPED CONFIGURATION.
Den här systemfunktionen fungerar under den enkla infrastrukturen för profilering av frågekörningsstatistik. Mer information finns i infrastruktur för frågeprofilering.
Showplan-utdata från sys.dm_exec_query_plan_stats innehåller följande information:
All kompileringstidsinformation som finns i den cachelagrade planen
Körningsinformation, till exempel det faktiska antalet rader per operator, den totala cpu-tiden och körningstiden för frågan, spillvarningar, faktisk DOP, maximalt använt minne och beviljat minne
Under följande villkor returneras en Showplan-utdata som motsvarar en faktisk körningsplan i kolumnen i query_plan den returnerade tabellen för sys.dm_exec_query_plan_stats:
Planen finns i sys.dm_exec_cached_plans.
och
Frågan som körs är komplex eller resurskrävande.
Under följande villkor returneras en förenklad1 Showplan-utdata i kolumnen i query_plan den returnerade tabellen för sys.dm_exec_query_plan_stats:
Planen finns i sys.dm_exec_cached_plans.
och
Frågan är enkel nog, vanligtvis kategoriserad som en del av en OLTP-arbetsbelastning.
1 Refererar till en Showplan som endast innehåller rotnodoperatorn (SELECT).
Under följande villkor returneras inga utdata från sys.dm_exec_query_plan_stats:
Den frågeplan som anges med hjälp
plan_handleav har tagits bort från plancachen.eller
Frågeplanen kunde inte cachelagrades från början. Mer information finns i Cachelagring och återanvändning av körningsplan.
Anmärkning
En begränsning i antalet kapslade nivåer som tillåts i xml-datatypen innebär att det inte går att sys.dm_exec_query_plan returnera frågeplaner som uppfyller eller överskrider 128 nivåer av kapslade element. I tidigare versioner av SQL Server hindrade det här villkoret frågeplanen från att returneras och genererar fel 6335. I SQL Server 2005 (9.x) Service Pack 2 och senare versioner query_plan returnerar NULLkolumnen .
Permissions
SQL Server 2019 (15.x) och tidigare versioner kräver VIEW SERVER STATE behörighet på servern.
SQL Server 2022 (16.x) och senare versioner kräver VIEW SERVER PERFORMANCE STATE behörighet på servern.
Examples
A. Titta på den senaste kända faktiska frågekörningsplanen för en specifik cachelagrad plan
I följande exempel frågar sys.dm_exec_cached_plans du efter den intressanta planen och kopierar den plan_handle från utdata.
SELECT * FROM sys.dm_exec_cached_plans;
GO
Använd sedan den kopierade plan_handle med systemfunktionen sys.dm_exec_query_plan_statsför att hämta den senast kända faktiska frågekörningsplanen.
SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);
GO
B. Titta på den senaste kända faktiska frågekörningsplanen för alla cachelagrade planer
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. Titta på den senaste kända faktiska frågekörningsplanen för en specifik cachelagrad plan och frågetext
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. Titta på cachelagrade händelser för utlösare
SELECT * FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype = 'Trigger';
GO