Freigeben über


sys.dm_exec_query_stats (Transact-SQL)

Gibt die Aggregatleistungsstatistik für zwischengespeicherte Abfragepläne zurück. Diese Sicht enthält eine Zeile pro Abfrageanweisung innerhalb des zwischengespeicherten Plans, und die Lebensdauer der Zeilen ist an den Plan selbst gebunden. Wenn ein Plan aus dem Cache entfernt wird, werden die entsprechenden Zeilen aus dieser Sicht entfernt.

HinweisHinweis

Die erste Abfrage von sys.dm_exec_query_stats kann zu ungenauen Ergebnissen führen, wenn derzeit eine hohe Arbeitsauslastung auf dem Server besteht. Erneutes Ausführen der Abfrage liefert unter Umständen genauere Ergebnisse.

Spaltenname

Datentyp

Beschreibung

sql_handle

varbinary(64)

Ein Token, das auf den Batch oder die gespeicherte Prozedur verweist, von dem bzw. der die Abfrage Bestandteil ist.

sql_handle kann zusammen mit statement_start_offset und statement_end_offset verwendet werden, um den SQL-Text der Abfrage abzurufen, indem die dynamische Verwaltungsfunktion sys.dm_exec_sql_text aufgerufen wird.

statement_start_offset

int

Gibt (in Bytes) beginnend mit 0 die Startposition der Abfrage, die die Zeile beschreibt, innerhalb des Textes des Batches oder des permanenten Objekts an.

statement_end_offset

int

Gibt (in Bytes) beginnend mit 0 die Endposition der Abfrage, die die Zeile beschreibt, innerhalb des Textes des Batches oder des permanenten Objekts an. Der Wert -1 gibt das Ende des Batches an.

plan_generation_num

bigint

Eine Sequenznummer, anhand der nach einer Neukompilierung zwischen einzelnen Instanzen von Plänen unterschieden werden kann.

plan_handle

varbinary(64)

Ein Token, das auf den kompilierten Plan verweist, dessen Bestandteil die Abfrage ist. Dieser Wert kann an die dynamische Verwaltungsfunktion sys.dm_exec_query_plan übergeben werden, um den Abfrageplan abzurufen.

creation_time

datetime

Der Zeitpunkt, zu dem der Plan kompiliert wurde.

last_execution_time

datetime

Der Zeitpunkt, zu dem die Ausführung des Plans gestartet wurde.

execution_count

bigint

Anzahl von Ausführungen des Plans seit der letzten Kompilierung.

total_worker_time

bigint

CPU-Gesamtzeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für Ausführungen dieses Plans seit der Kompilierung.

last_worker_time

bigint

CPU-Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für die letzte Ausführung des Plans.

min_worker_time

bigint

Minimale CPU-Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans.

max_worker_time

bigint

Maximale CPU-Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans.

total_physical_reads

bigint

Gesamtanzahl physischer Lesevorgänge für Ausführungen dieses Planes seit der Kompilierung.

last_physical_reads

bigint

Anzahl physischer Lesevorgänge bei der letzten Ausführung des Planes.

min_physical_reads

bigint

Bisherige minimale Anzahl physischer Lesevorgänge für eine einzelne Ausführung dieses Plans.

max_physical_reads

bigint

Bisherige maximale Anzahl physischer Lesevorgänge für eine einzelne Ausführung dieses Planes.

total_logical_writes

bigint

Gesamtanzahl logischer Schreibvorgänge für Ausführungen dieses Planes seit der Kompilierung.

last_logical_writes

bigint

Anzahl logischer Schreibvorgänge bei der letzten Ausführung des Plans.

min_logical_writes

bigint

Bisherige minimale Anzahl logischer Schreibvorgänge für eine einzelne Ausführung dieses Plans.

max_logical_writes

bigint

Bisherige maximale Anzahl logischer Schreibvorgänge für eine einzelne Ausführung dieses Plans.

total_logical_reads

bigint

Gesamtanzahl logischer Lesevorgänge für Ausführungen dieses Plans seit der Kompilierung.

last_logical_reads

bigint

Anzahl logischer Lesevorgänge bei der letzten Ausführung des Plans.

min_logical_reads

bigint

Bisherige minimale Anzahl logischer Lesevorgänge für eine einzelne Ausführung dieses Planes.

max_logical_reads

bigint

Bisherige maximale Anzahl logischer Lesevorgänge für eine einzelne Ausführung dieses Plans.

total_clr_time

bigint

Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) in Microsoft.NET Framework CLR-Objekten (Common Language Runtime) für Ausführungen dieses Plans seit der Kompilierung. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein.

last_clr_time

bigint

Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für die Ausführung in .NET Framework CLR-Objekten während der letzten Ausführung dieses Plans. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein.

min_clr_time

bigint

Minimale Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans in .NET Framework CLR-Objekten. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein.

max_clr_time

bigint

Maximale Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans in .NET Framework CLR. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein.

total_elapsed_time

bigint

Insgesamt verstrichene Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für abgeschlossene Ausführungen dieses Plans.

last_elapsed_time

bigint

Verstrichene Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für die letzte abgeschlossene Ausführung dieses Plans.

min_elapsed_time

bigint

Mindestens verstrichene Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine beliebige abgeschlossene Ausführung dieses Plans.

max_elapsed_time

bigint

Maximal verstrichene Zeit in Mikrosekunden (allerdings nur auf Millisekunden genau) für eine beliebige abgeschlossene Ausführung dieses Plans.

query_hash

Binary(8)

Binärer Hashwert, der in der Abfrage berechnet wird und zum Identifizieren von Abfragen mit ähnlicher Logik verwendet wird. Sie können den Abfragehash verwenden, um die aggregierte Ressourcennutzung für Abfragen zu ermitteln, die sich nur durch Literalwerte unterscheiden. Weitere Informationen finden Sie unter Suchen und Optimieren von ähnlichen Abfragen mit Abfrage und Abfrageplanhashes.

query_plan_hash

binary(8)

Binärer Hashwert, der im Abfrageausführungsplan berechnet wird und zum Identifizieren ähnlicher Abfrageausführungspläne verwendet wird. Sie können diesen Hashwert verwenden, um die kumulierten Kosten für Abfragen mit ähnlichen Ausführungsplänen zu suchen. Weitere Informationen finden Sie unter Suchen und Optimieren von ähnlichen Abfragen mit Abfrage und Abfrageplanhashes.

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.

Hinweise

Statistiken in der Sicht werden nach Abschluss einer Abfrage aktualisiert.

Beispiele

A. Suchen der TOP-N-Abfragen

Das folgende Beispiel gibt Informationen zu den fünf Abfragen mit dem höchsten durchschnittlichen CPU-Zeitaufwand zurück. Die Abfragen werden in diesem Beispiel anhand des Abfragehashes aggregiert, sodass logisch identische Abfragen basierend auf dem kumulierten Ressourcenverbrauch gruppiert werden.

USE AdventureWorks;
GO
SELECT TOP 5 query_stats.query_hash AS "Query Hash", 
    SUM(query_stats.total_worker_time) / SUM(query_stats.execution_count) AS "Avg CPU Time",
    MIN(query_stats.statement_text) AS "Statement Text"
FROM 
    (SELECT QS.*, 
    SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
    ((CASE statement_end_offset 
        WHEN -1 THEN DATALENGTH(st.text)
        ELSE QS.statement_end_offset END 
            - QS.statement_start_offset)/2) + 1) AS statement_text
     FROM sys.dm_exec_query_stats AS QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as ST) as query_stats
GROUP BY query_stats.query_hash
ORDER BY 2 DESC;
GO