sys.dm_exec_query_plan_stats (Transact-SQL)

gilt für: SQL Server 2019 und spätere Azure SQL-Datenbank Azure Synapse Analytics parallel Data Warehouse

Gibt den-Wert des letzten bekannten tatsächlichen Ausführungs Plans für einen zuvor zwischengespeicherten Abfrageplan zurück.

Syntax

sys.dm_exec_query_plan_stats(plan_handle)  

Argumente

plan_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. plan_handle ist varbinary(64)

plan_handle kann aus den folgenden dynamischen Verwaltungsobjekten abgerufen werden:

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
DBID smallint ID der Kontextdatenbank, die gültig war, als die diesem Plan entsprechende Transact-SQL -Anweisung kompiliert wurde. Für Ad-hoc-Anweisungen und vorbereitete SQL-Anweisungen, die ID der Datenbank, in der die Anweisungen kompiliert wurden.

Die Spalte lässt NULL-Werte zu.
objectid int ID des Objekts (z. B. gespeicherte Prozedur oder benutzerdefinierte Funktion) für diesen Abfrageplan. Für Ad-hoc- und vorbereitete Batches entspricht diese Spalte dem Wert NULL.

Die Spalte lässt NULL-Werte zu.
Zahl smallint Gespeicherte Prozedur mit ganzer Zahl. Eine Gruppe von Prozeduren für die orders-Anwendung kann z. B. die Namen orderproc;1, orderproc;2 usw. haben. Für Ad-hoc- und vorbereitete Batches entspricht diese Spalte dem Wert NULL.

Die Spalte lässt NULL-Werte zu.
. bit Zeigt an, ob die entsprechende Prozedur verschlüsselt ist.

0 = nicht verschlüsselt

1 = verschlüsselt

NULL-Werte sind in der Spalte nicht zulässig.
query_plan xml Enthält die letzte bekannte Runtime-Showplan-Darstellung des tatsächlichen Abfrage Ausführungs Plans, der mit plan_handle angegeben wird. Der Showplan liegt im XML-Format vor. Für jeden Batch, der z. B. Ad-hoc- Transact-SQL -Anweisungen, Aufrufe von gespeicherten Prozeduren und benutzerdefinierten Funktionen enthält, wird jeweils ein Plan generiert.

Die Spalte lässt NULL-Werte zu.

Bemerkungen

Dies ist ein Opt-in-Feature. Verwenden Sie das Ablaufverfolgungsflag 2451, um auf Serverebene zu aktivieren. Um auf Datenbankebene zu aktivieren, verwenden Sie die Option LAST_QUERY_PLAN_STATS in ALTER DATABASE scoped Configuration (Transact-SQL-).

Diese Systemfunktion funktioniert unter der Lightweight -Infrastruktur für die Abfrage Ausführungs Statistik-Profilerstellung. Weitere Informationen finden Sie unter Profilerstellungsinfrastruktur für Abfragen.

Die Showplan-Ausgabe von sys.dm_exec_query_plan_stats enthält die folgenden Informationen:

  • Alle im zwischengespeicherten Plan gefundenen Kompilierzeit Informationen
  • 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 Arbeitsspeicher

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 zurückgegeben sys.dm_exec_query_plan_stats :

  • Der Plan befindet sich in sys.dm_exec_cached_plans.
    AND
  • Die ausgeführte Abfrage ist komplex oder Ressourcen aufwendig.

Unter den folgenden Bedingungen wird eine vereinfachte 1 Showplan-Ausgabe in der query_plan -Spalte der zurückgegebenen Tabelle für zurückgegeben sys.dm_exec_query_plan_stats :

  • Der Plan befindet sich in sys.dm_exec_cached_plans.
    AND
  • Die Abfrage ist einfach genug und wird normalerweise als Teil einer OLTP-Arbeitsauslastung kategorisiert.

1 bezieht sich auf einen Showplan, der nur den Stamm Knoten Operator (Select) enthält.

Unter den folgenden Bedingungen wird keine Ausgabe von zurückgegeben sys.dm_exec_query_plan_stats :

Hinweis

Aufgrund einer Einschränkung in der Anzahl der zulässigen, im XML -Datentyp zulässigen Werte sys.dm_exec_query_plan kann keine Abfrage Pläne zurückgeben, die 128 Ebenen von geschachtelte-Elementen erfüllen oder überschreiten. In früheren Versionen von SQL Server verhinderte diese Bedingung, dass der Abfrageplan nicht zurückgegeben wurde, und generiert den Fehler 6335. In SQL Server 2005 (9.x) Service Pack 2 und höheren Versionen gibt die query_plan Spalte NULL zurück.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Beispiele

A. Betrachten des letzten bekannten Abfrage Ausführungs Plans für einen bestimmten zwischengespeicherten 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.

SELECT * FROM sys.dm_exec_cached_plans;  
GO  

Verwenden Sie dann zum Abrufen des letzten bekannten Abfrage Ausführungs Plans die plan_handle mit der Systemfunktion kopierte sys.dm_exec_query_plan_stats.

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

B. Betrachten des letzten bekannten Abfrage Ausführungs Plans für alle zwischengespeicherten Pläne

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. Betrachten des letzten bekannten Abfrage Ausführungs Plans für einen bestimmten zwischengespeicherten Plan und Abfragetext

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: Suchen nach zwischengespeicherten Ereignissen für den Triggertyp

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

Weitere Informationen

Ablaufverfolgungsflags
Dynamische Verwaltungssichten und -funktionen (Transact-SQL)
Dynamische Verwaltungs Sichten im Zusammenhang mit der Ausführung (Transact-SQL-)