Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
Retourneert het equivalent van het laatst bekende werkelijke uitvoeringsplan voor een eerder in de cache opgeslagen queryplan.
Syntaxis
sys.dm_exec_query_plan_stats ( plan_handle )
Arguments
plan_handle
Een token dat een queryuitvoeringsplan op unieke wijze identificeert voor een batch die is uitgevoerd en het bijbehorende plan zich in de plancache bevindt of momenteel wordt uitgevoerd. plan_handle is varbinary(64).
De plan_handle kan worden verkregen uit de volgende dynamische beheerobjecten:
- sys.dm_exec_cached_plans
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_procedure_stats
- sys.dm_exec_trigger_stats
Tabel geretourneerd
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
dbid |
smallint | Id van de contextdatabase die van kracht was toen de Transact-SQL instructie die overeenkomt met dit plan werd gecompileerd. Voor ad-hoc en voorbereide SQL-instructies, de id van de database waarin de instructies zijn gecompileerd. Kolom is null-waarde. |
objectid |
int | Id van het object (bijvoorbeeld opgeslagen procedure of door de gebruiker gedefinieerde functie) voor dit queryplan. Voor ad-hoc- en voorbereide batches is deze kolom null. Kolom is null-waarde. |
number |
smallint | Genummerde opgeslagen procedure geheel getal. Een groep procedures voor de toepassing kan bijvoorbeeld een orders naam orderproc;1hebben, orderproc;2enzovoort. Voor ad-hoc- en voorbereide batches is deze kolom null.Kolom is null-waarde. |
encrypted |
bit | Geeft aan of de bijbehorende opgeslagen procedure is versleuteld. 0 = niet versleuteld 1 = versleuteld Kolom kan niet null worden. |
query_plan |
xml | Bevat de laatst bekende showplan-weergave van het werkelijke uitvoeringsplan voor query's dat is opgegeven met plan_handle. Showplan heeft een XML-indeling. Er wordt één plan gegenereerd voor elke batch die bijvoorbeeld ad hoc Transact-SQL instructies, opgeslagen procedureaanroepen en door de gebruiker gedefinieerde functieaanroepen bevat. Kolom is null-waarde. |
Opmerkingen
Dit is een opt-in-functie. Als u op serverniveau wilt inschakelen, gebruikt u traceringsvlag 2451. Als u wilt inschakelen op databaseniveau, gebruikt u de LAST_QUERY_PLAN_STATS optie IN ALTER DATABASE SCOPED CONFIGURATION.
Deze systeemfunctie werkt onder de lichtgewicht profileringsinfrastructuur voor queryuitvoeringsstatistieken. Voor meer informatie, zie Infrastructuur voor queryprofilering.
De Showplan-uitvoer door sys.dm_exec_query_plan_stats bevat de volgende informatie:
Alle gecompileerde tijdgegevens in het in de cache opgeslagen plan
Runtime-informatie zoals het werkelijke aantal rijen per operator, de totale cpu-tijd en uitvoeringstijd van de query, waarschuwingen overlopen, werkelijke DOP, het maximaal gebruikte geheugen en het toegewezen geheugen
Onder de volgende voorwaarden wordt een Showplan-uitvoer geretourneerd die gelijk is aan een daadwerkelijk uitvoeringsplan in de query_plan kolom van de geretourneerde tabel voor sys.dm_exec_query_plan_stats:
Het plan vindt u in sys.dm_exec_cached_plans.
en
De query die wordt uitgevoerd, is complex of verbruikt resources.
Onder de volgende voorwaarden wordt een vereenvoudigde1 Showplan-uitvoer geretourneerd in de query_plan kolom van de geretourneerde tabel voor sys.dm_exec_query_plan_stats:
Het plan vindt u in sys.dm_exec_cached_plans.
en
De query is eenvoudig genoeg, meestal gecategoriseerd als onderdeel van een OLTP-workload.
1 Verwijst naar een Showplan dat alleen de operator van het hoofdknooppunt (SELECT) bevat.
Onder de volgende voorwaarden wordt geen uitvoer geretourneerd van sys.dm_exec_query_plan_stats:
Het queryplan dat is opgegeven door gebruik te gebruiken
plan_handle, is verwijderd uit de plancache.or
Het queryplan was in de eerste plaats niet in de cache opgeslagen. Zie Opslaan in cache en hergebruik van uitvoeringsplan voor meer informatie.
Opmerking
Een beperking in het aantal geneste niveaus dat is toegestaan in het XML-gegevenstype , betekent dat queryplannen die sys.dm_exec_query_plan voldoen aan of groter zijn dan 128 niveaus van geneste elementen, niet kunnen retourneren. In eerdere versies van SQL Server heeft deze voorwaarde voorkomen dat het queryplan retourneert en fout 6335 genereert. In SQL Server 2005 (9.x) Service Pack 2 en latere versies retourneert query_plande NULL kolom .
Permissions
SQL Server 2019 (15.x) en eerdere versies vereisen VIEW SERVER STATE toestemming op de server.
VOOR SQL Server 2022 (16.x) en latere versies is machtiging vereist VIEW SERVER PERFORMANCE STATE op de server.
Voorbeelden
Eén. Bekijk het laatst bekende werkelijke queryuitvoeringsplan voor een specifiek in de cache opgeslagen plan
In het volgende voorbeeld worden query's uitgevoerd sys.dm_exec_cached_plans om het interessante plan te vinden en deze uit de uitvoer te kopiëren plan_handle .
SELECT * FROM sys.dm_exec_cached_plans;
GO
Als u vervolgens het laatst bekende werkelijke queryuitvoeringsplan wilt ophalen, gebruikt u de gekopieerde plan_handle met de systeemfunctie sys.dm_exec_query_plan_stats.
SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);
GO
B. Bekijk het laatst bekende werkelijke queryuitvoeringsplan voor alle in de cache opgeslagen plannen
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. Bekijk het laatst bekende werkelijke queryuitvoeringsplan voor een specifiek plan in de cache en querytekst
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. Bekijk gebeurtenissen in de cache voor trigger
SELECT * FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype = 'Trigger';
GO