sys. dm_exec_query_plan_stats (Transact-SQL)sys.dm_exec_query_plan_stats (Transact-SQL)

Gilt für: jaSQL Server 2019 und höher jaAzure SQL- DatenbankNein Azure Synapse Analytics (SQL DW )Nein parallel Data WarehouseAPPLIES TO: YesSQL Server 2019 and later YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

Gibt den-Wert des letzten bekannten tatsächlichen Ausführungs Plans für einen zuvor zwischengespeicherten Abfrageplan zurück.Returns the equivalent of the last known actual execution plan for a previously cached query plan.

SyntaxSyntax

sys.dm_exec_query_plan_stats(plan_handle)  

ArgumenteArguments

plan_handleplan_handle
Ein Token, das einen Abfrage Ausführungsplan für einen Batch eindeutig identifiziert, der ausgeführt wurde und dessen Plan sich im Plancache befindet oder gerade ausgeführt wird.Is a token that uniquely identifies a query execution plan for a batch that has executed and its plan resides in the plan cache, or is currently executing. plan_handle ist varbinary(64)plan_handle is varbinary(64).

plan_handle kann aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:The plan_handle can be obtained from the following dynamic management objects:

Zurückgegebene TabelleTable Returned

SpaltennameColumn Name DatentypData Type BESCHREIBUNGDescription
DBIDdbid smallintsmallint ID der Kontextdatenbank, die gültig war, als die diesem Plan entsprechende Transact-SQLTransact-SQL -Anweisung kompiliert wurde.ID of the context database that was in effect when the Transact-SQLTransact-SQL statement corresponding to this plan was compiled. Für Ad-hoc-Anweisungen und vorbereitete SQL-Anweisungen, die ID der Datenbank, in der die Anweisungen kompiliert wurden.For ad hoc and prepared SQL statements, the ID of the database where the statements were compiled.

Die Spalte lässt NULL-Werte zu.Column is nullable.
ObjectIDobjectid intint ID des Objekts (z. B. gespeicherte Prozedur oder benutzerdefinierte Funktion) für diesen Abfrageplan.ID of the object (for example, stored procedure or user-defined function) for this query plan. Für Ad-hoc- und vorbereitete Batches entspricht diese Spalte dem Wert NULL.For ad hoc and prepared batches, this column is null.

Die Spalte lässt NULL-Werte zu.Column is nullable.
Zahlnumber smallintsmallint Gespeicherte Prozedur mit ganzer Zahl.Numbered stored procedure integer. Eine Gruppe von Prozeduren für die orders-Anwendung kann z. B. die Namen orderproc;1, orderproc;2 usw. haben.For example, a group of procedures for the orders application may be named orderproc;1, orderproc;2, and so on. Für Ad-hoc- und vorbereitete Batches entspricht diese Spalte dem Wert NULL.For ad hoc and prepared batches, this column is null.

Die Spalte lässt NULL-Werte zu.Column is nullable.
.encrypted bitbit Zeigt an, ob die entsprechende Prozedur verschlüsselt ist.Indicates whether the corresponding stored procedure is encrypted.

0 = nicht verschlüsselt0 = not encrypted

1 = verschlüsselt1 = encrypted

NULL-Werte sind in der Spalte nicht zulässig.Column is not nullable.
query_planquery_plan xmlxml Enthält die letzte bekannte Runtime-Showplan-Darstellung des tatsächlichen Abfrage Ausführungs Plans, der mit plan_handleangegeben wird.Contains the last known runtime Showplan representation of the actual query execution plan that is specified with plan_handle. Der Showplan liegt im XML-Format vor.The Showplan is in XML format. Für jeden Batch, der z. B. Ad-hoc- Transact-SQLTransact-SQL -Anweisungen, Aufrufe von gespeicherten Prozeduren und benutzerdefinierten Funktionen enthält, wird jeweils ein Plan generiert.One plan is generated for each batch that contains, for example ad hoc Transact-SQLTransact-SQL statements, stored procedure calls, and user-defined function calls.

Die Spalte lässt NULL-Werte zu.Column is nullable.

HinweiseRemarks

Diese Systemfunktion ist ab SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2,4 verfügbar.This system function is available starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4.

Hierbei handelt es sich um ein optionales Feature, für das das Ablaufverfolgungsflag 2451 aktiviert sein muss.This is an opt-in feature and requires trace flag 2451 to be enabled. Informationen dazu, wie Sie dies ab SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5 auf der Datenbankebene erreichen, finden Sie in der LAST_QUERY_PLAN_STATS-Option unter ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5, to accomplish this at the database level, see the LAST_QUERY_PLAN_STATS option in ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL).

Diese Systemfunktion funktioniert unter der Lightweight -Infrastruktur für die Abfrage Ausführungs Statistik-Profilerstellung.This system function works under the lightweight query execution statistics profiling infrastructure. Weitere Informationen finden Sie unter Infrastruktur für die Abfrage Profilerstellung.For more information, see Query Profiling Infrastructure.

Die Showplan-Ausgabe von sys. dm_exec_query_plan_stats enthält die folgenden Informationen:The Showplan output by sys.dm_exec_query_plan_stats contains the following information:

  • Alle im zwischengespeicherten Plan gefundenen Kompilierzeit InformationenAll the compile-time information found in the cached plan
  • Laufzeitinformationen, z. b. die tatsächliche Anzahl von Zeilen pro Operator, die gesamte Abfrage-CPU-Zeit und die Ausführungszeit, Überlauf Warnungen, tatsächlicher DOP, maximal verwendeter Arbeitsspeicher und zugewiesener ArbeitsspeicherRuntime information such as the actual number of rows per operator, the total query CPU time and execution time, spill warnings, actual DOP, the maximum used memory and granted memory

Unter den folgenden Bedingungen wird eine Showplan-Ausgabe , die einem tatsächlichen Ausführungsplan entspricht , in der query_plan -Spalte der zurückgegebenen Tabelle für sys. dm_exec_query_plan_statszurückgegeben:Under the following conditions, a Showplan output equivalent to an actual execution plan is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

Unter den folgenden Bedingungen wird eine **vereinfachte 1 ** Showplan-Ausgabe in der query_plan -Spalte der zurückgegebenen Tabelle für sys. dm_exec_query_plan_statszurückgegeben:Under the following conditions, a simplified 1 Showplan output is returned in the query_plan column of the returned table for sys.dm_exec_query_plan_stats:

  • Der Plan kann in sys. dm_exec_cached_plansgefunden werden.The plan can be found in sys.dm_exec_cached_plans.
    ANDAND
  • Die Abfrage ist einfach genug und wird normalerweise als Teil einer OLTP-Arbeitsauslastung kategorisiert.The query is simple enough, usually categorized as part of an OLTP workload.

1 ab SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2,5 bezieht sich dies auf einen Showplan, der nur den Stamm Knoten Operator (Select) enthält.1 Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.5, this refers to a Showplan that only contains the root node operator (SELECT). Für SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2,4 bezieht sich dies auf den zwischengespeicherten Plan, der über verfügbar ist sys.dm_exec_cached_plans .For SQL Server 2019 (15.x)SQL Server 2019 (15.x) CTP 2.4 this refers to the cached plan as available through sys.dm_exec_cached_plans.

Unter den folgenden Bedingungen wird keine Ausgabe aus sys. dm_exec_query_plan_statszurückgegeben:Under the following conditions, no output is returned from sys.dm_exec_query_plan_stats:

  • Der mit plan_handle angegebene Abfrageplan wurde aus dem Plancache entfernt.The query plan that is specified by using plan_handle has been evicted from the plan cache.
    OROR
  • Der Abfrageplan konnte nicht an erster Stelle zwischengespeichert werden.The query plan was not cacheable in the first place. Weitere Informationen finden Sie unter zwischen Speichern und wieder verwenden von Ausführungsplänen .For more information, see Execution Plan Caching and Reuse .

Hinweis

Aufgrund einer Beschränkung der im xml -Datentyp zulässigen Anzahl geschachtelter Ebenen kann sys.dm_exec_query_plan keine Abfragepläne zurückgeben, die 128 oder mehr Ebenen geschachtelter Elemente aufweisen.Due to a limitation in the number of nested levels allowed in the xml data type, sys.dm_exec_query_plan cannot return query plans that meet or exceed 128 levels of nested elements. In früheren Versionen von SQL ServerSQL Server verhinderte diese Bedingung, dass der Abfrageplan nicht zurückgegeben wurde, und generiert den Fehler 6335.In earlier versions of SQL ServerSQL Server, this condition prevented the query plan from returning and generates error 6335. In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 und höheren Versionen gibt die query_plan -Spalte NULL zurück.In SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 2 and later versions, the query_plan column returns NULL.

BerechtigungenPermissions

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.Requires VIEW SERVER STATE permission on the server.

BeispieleExamples

A.A. Betrachten des letzten bekannten Abfrage Ausführungs Plans für einen bestimmten zwischengespeicherten PlanLooking at last known actual query execution plan for a specific cached plan

Im folgenden Beispiel wird sys. dm_exec_cached_plans abgefragt, um den interessanten Plan zu suchen und dessen plan_handle aus der Ausgabe zu kopieren.The following example queries sys.dm_exec_cached_plans to find the interesting plan and copy its plan_handle from the output.

SELECT * FROM sys.dm_exec_cached_plans;  
GO  

Verwenden Sie dann zum Abrufen des letzten bekannten Abfrage Ausführungs Plans den, der plan_handle mit der Systemfunktion sys. dm_exec_query_plan_statskopiert wurde.Then, to obtain the last known actual query execution plan, use the copied plan_handle with system function sys.dm_exec_query_plan_stats.

SELECT * FROM sys.dm_exec_query_plan_stats(< copied plan_handle >);  
GO  

B.B. Betrachten des letzten bekannten Abfrage Ausführungs Plans für alle zwischengespeicherten PläneLooking at last known actual query execution plan for all cached plans

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.C. Betrachten des letzten bekannten Abfrage Ausführungs Plans für einen bestimmten zwischengespeicherten Plan und AbfragetextLooking at last known actual query execution plan for a specific cached plan and query text

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:D. Suchen nach zwischengespeicherten Ereignissen für den TriggertypLook at cached events for trigger

SELECT *
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_query_plan_stats(plan_handle)
WHERE objtype ='Trigger';
GO

Weitere InformationenSee Also

LaufverfolgungsflagsTrace Flags
Dynamische Verwaltungs Sichten und Funktionen (Transact-SQL-) Dynamic Management Views and Functions (Transact-SQL)
Dynamische Verwaltungs Sichten im Zusammenhang mit der Ausführung (Transact-SQL-)Execution Related Dynamic Management Views (Transact-SQL)