sys.dm_exec_query_stats (Transact-SQL)
Gilt für:SQL Server
Azure SQL-Datenbank
Azure SQL Managed Instance
Gibt aggregierte Leistungsstatistiken für zwischengespeicherte Abfragepläne in SQL Server 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.
Hinweis
- Die Ergebnisse von sys.dm_exec_query_stats können mit jeder Ausführung variieren, da die Daten nur abgeschlossene Abfragen und nicht solche widerspiegeln, die sich noch im Flug befinden.
- Um dies aus einem dedizierten SQL-Pool in Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_exec_query_stats. Verwenden Sie für serverlose SQL-Pools sys.dm_exec_query_stats.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
sql_handle | varbinary(64) | Ein Token, das den Batch oder die gespeicherte Prozedur, zu dem bzw. der die Abfrage gehört, eindeutig identifiziert. 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 die Startposition der Abfrage, die in der Zeile beschrieben wird, beginnend mit 0 im Text des zugehörigen persistenten Objekts oder Batchobjekts an (in Bytes). |
statement_end_offset | int | Gibt die Endposition der Abfrage, die in der Zeile beschrieben wird, beginnend mit 0 im Text des zugehörigen persistenten Objekts oder Batchobjekts an (in Bytes). Für Versionen vor SQL Server 2014 (12.x) gibt der Wert -1 das Ende des Batches an. Nachfolgende Kommentare sind nicht mehr enthalten. |
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 einen Abfrageausführungsplan für einen Batch eindeutig identifiziert, der ausgeführt wurde und dessen Plan sich im Plancache befindet, oder der derzeit ausgeführt wird. Dieser Wert kann an die dynamische Verwaltungsfunktion sys.dm_exec_query_plan übergeben werden, um den Abfrageplan abzurufen. Ist immer 0x000, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
creation_time | datetime | Der Zeitpunkt, zu dem der Plan kompiliert wurde. |
last_execution_time | datetime | Der Zeitpunkt, zu dem die Ausführung des Plans zuletzt gestartet wurde. |
execution_count | bigint | Die Anzahl von Planausführungen seit der letzten Kompilierung. |
total_worker_time | bigint | Die CPU-Gesamtzeit in Mikrosekunden (aber nur auf Millisekunden genau) für Ausführungen dieses Plans seit der Kompilierung. Wenn zahlreiche Ausführungen weniger als 1 Millisekunde dauern, wird total_worker_time bei nativ kompilierten gespeicherten Prozeduren u.U. nicht exakt angegeben. |
last_worker_time | bigint | Die CPU-Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für die letzte Ausführung des Plans. 1 |
min_worker_time | bigint | Die minimale CPU-Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans. 1 |
max_worker_time | bigint | Maximale CPU-Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für eine einzelne Ausführung dieses Plans. 1 |
total_physical_reads | bigint | Die Gesamtanzahl physischer Lesevorgänge für Ausführungen dieses Plans seit der Kompilierung. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_physical_reads | bigint | Die Anzahl physischer Lesevorgänge bei der letzten Ausführung des Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
min_physical_reads | bigint | Die bisherige minimale Anzahl physischer Lesevorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_physical_reads | bigint | Die bisherige maximale Anzahl physischer Lesevorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_writes | bigint | Die Gesamtanzahl logischer Schreibvorgänge für Ausführungen dieses Plans seit der Kompilierung. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_logical_writes | bigint | Anzahl der Pufferpoolseiten, die während der letzten Ausführung des Plans verdutzt wurden. Nachdem eine Seite gelesen wurde, wird die Seite nur bei der ersten Änderung modifiziert. Wenn eine Seite modifiziert wird, wird diese Zahl erhöht. Nachfolgende Änderungen einer bereits modifiziert Seite wirken sich nicht auf diese Zahl aus. Diese Zahl ist beim Abfragen einer speicheroptimierten Tabelle immer 0. |
min_logical_writes | bigint | Die bisherige minimale Anzahl logischer Schreibvorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_logical_writes | bigint | Die bisherige maximale Anzahl logischer Schreibvorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_reads | bigint | Die Gesamtanzahl logischer Lesevorgänge für Ausführungen dieses Plans seit der Kompilierung. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_logical_reads | bigint | Die Anzahl logischer Lesevorgänge bei der letzten Ausführung des Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
min_logical_reads | bigint | Die bisherige minimale Anzahl logischer Lesevorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_logical_reads | bigint | Die bisherige maximale Anzahl logischer Lesevorgänge für eine einzelne Ausführung dieses Plans. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_clr_time | bigint | Zeit, die in Mikrosekunden (aber nur auf Millisekunden genau) gemeldet wird, verbraucht innerhalb von Microsoft .NET Framework Common Language Runtime (CLR)-Objekten durch Ausführungen dieses Plans, seit er kompiliert wurde. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein. |
last_clr_time | bigint | Zeit, die in Mikrosekunden (aber nur in Millisekunden genau) gemeldet wird, die von der Ausführung in .NET Framework CLR-Objekten während der letzten Ausführung dieses Plans verbraucht wird. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein. |
min_clr_time | bigint | Minimale Zeit, die in Mikrosekunden (aber nur auf Millisekunden genau) gemeldet wird, die dieser Plan jemals innerhalb .NET Framework CLR-Objekte während einer einzelnen Ausführung verbraucht hat. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein. |
max_clr_time | bigint | Maximale Zeit, die in Mikrosekunden (aber nur auf Millisekunden genau) gemeldet wird, die dieser Plan jemals innerhalb der .NET Framework CLR während einer einzelnen Ausführung verbraucht hat. Die CLR-Objekte können gespeicherte Prozeduren, Funktionen, Trigger, Typen und Aggregate sein. |
total_elapsed_time | bigint | Insgesamt verstrichene Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für abgeschlossene Ausführungen dieses Plans. |
last_elapsed_time | bigint | Verstrichene Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für die letzte abgeschlossene Ausführung dieses Plans. |
min_elapsed_time | bigint | Mindestens verstrichene Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für eine beliebige abgeschlossene Ausführung dieses Plans. |
max_elapsed_time | bigint | Maximal verstrichene Zeit in Mikrosekunden (aber nur auf Millisekunden genau) für eine beliebige abgeschlossene Ausführung dieses Plans. |
query_hash | Binär(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. |
query_plan_hash | binary(8) | Binärer Hashwert, der im Abfrageausführungsplan wird und zum Identifizieren ähnlicher Abfrageausführungspläne verwendet wird. Sie können diesen Abfrageplan-Hashwert verwenden, um die kumulierten Kosten für Abfragen mit ähnlichen Ausführungsplänen zu suchen. Ist immer 0x000, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
total_rows | bigint | Die Gesamtanzahl der von der Abfrage zurückgegebenen Zeilen. Darf nicht NULL sein. Ist immer 0, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
last_rows | bigint | Die Anzahl der bei der letzten Ausführung der Abfrage zurückgegebenen Zeilen. Darf nicht NULL sein. Ist immer 0, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
min_rows | bigint | Minimale Anzahl von Zeilen, die jemals während einer Ausführung von der Abfrage zurückgegeben wurden. Darf nicht NULL sein. Ist immer 0, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
max_rows | bigint | Maximale Anzahl von Zeilen, die jemals von der Abfrage während einer Ausführung zurückgegeben wurden. Darf nicht NULL sein. Ist immer 0, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
statement_sql_handle | varbinary(64) | Gilt für: SQL Server 2014 (12.x) und höher. Wird nur mit Werten ungleich NULL aufgefüllt, wenn Abfragespeicher aktiviert ist und die Statistiken für diese bestimmte Abfrage erfasst. |
statement_context_id | bigint | Gilt für: SQL Server 2014 (12.x) und höher. Wird nur mit Werten ungleich NULL aufgefüllt, wenn Abfragespeicher aktiviert ist und die Statistiken für diese bestimmte Abfrage erfasst. |
total_dop | bigint | Die Gesamtsumme des Parallelitätsgrads, den dieser Plan seit seiner Kompilierung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_dop | bigint | Der Grad der Parallelität bei der letzten Ausführung dieses Plans. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_dop | bigint | Der minimale Grad an Parallelität, den dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_dop | bigint | Der maximale Grad an Parallelität, den dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_grant_kb | bigint | Die Gesamtmenge der reservierten Speicherzuweisung in KB, die dieser Plan seit der Kompilierung erhalten hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_grant_kb | bigint | Die Menge der reservierten Speicherzuweisung in KB, als dieser Plan das letzte Mal ausgeführt wurde. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_grant_kb | bigint | Die Mindestmenge der reservierten Speicherzuweisung in KB, die dieser Plan jemals während einer Ausführung erhalten hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_grant_kb | bigint | Die maximale Menge an reserviertem Arbeitsspeicher in KB, die dieser Plan jemals während einer Ausführung erhalten hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_used_grant_kb | bigint | Die Gesamtmenge der reservierten Speicherzuweisung in KB, die dieser Plan seit der Kompilierung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_used_grant_kb | bigint | Die Menge der belegten Arbeitsspeicherzuweisung in KB bei der letzten Ausführung dieses Plans. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_used_grant_kb | bigint | Die Mindestmenge an verwendeter Arbeitsspeicherzuweisung in KB, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_used_grant_kb | bigint | Die maximale Menge an verwendeter Arbeitsspeicherzuweisung in KB, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_ideal_grant_kb | bigint | Die Gesamtmenge der idealen Speicherzuweisung in KB, die dieser Plan seit der Kompilierung geschätzt hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_ideal_grant_kb | bigint | Die Höhe der idealen Speicherzuweisung in KB, wenn dieser Plan das letzte Mal ausgeführt wurde. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_ideal_grant_kb | bigint | Die mindeste Menge an idealer Speicherzuweisung in KB, die dieser Plan jemals während einer Ausführung geschätzt hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_ideal_grant_kb | bigint | Die maximale Menge an idealer Speicherzuweisung in KB, die dieser Plan während einer Ausführung jemals geschätzt hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_reserved_threads | bigint | Die Gesamtsumme der reservierten parallelen Threads, die dieser Plan jemals seit der Kompilierung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_reserved_threads | bigint | Die Anzahl der reservierten parallelen Threads bei der letzten Ausführung dieses Plans. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_reserved_threads | bigint | Die Mindestanzahl reservierter paralleler Threads, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_reserved_threads | bigint | Die maximale Anzahl reservierter paralleler Threads, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_used_threads | bigint | Die Gesamtsumme der verwendeten parallelen Threads, die dieser Plan jemals seit der Kompilierung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
last_used_threads | bigint | Die Anzahl der verwendeten parallelen Threads bei der letzten Ausführung dieses Plans. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
min_used_threads | bigint | Die Mindestanzahl der verwendeten parallelen Threads, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
max_used_threads | bigint | Die maximale Anzahl der verwendeten parallelen Threads, die dieser Plan jemals während einer Ausführung verwendet hat. Es ist immer 0 für die Abfrage einer speicheroptimierten Tabelle. Gilt für: SQL Server 2016 (13.x) und höher. |
total_columnstore_segment_reads | bigint | Die Gesamtsumme der columnstore-Segmente, die von der Abfrage gelesen werden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
last_columnstore_segment_reads | bigint | Die Anzahl der Columnstore-Segmente, die von der letzten Ausführung der Abfrage gelesen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
min_columnstore_segment_reads | bigint | Die mindeste Anzahl von Columnstore-Segmenten, die jemals während einer Ausführung von der Abfrage gelesen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
max_columnstore_segment_reads | bigint | Die maximale Anzahl von Columnstore-Segmenten, die jemals während einer Ausführung von der Abfrage gelesen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
total_columnstore_segment_skips | bigint | Die Gesamtsumme der Columnstore-Segmente, die von der Abfrage übersprungen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
last_columnstore_segment_skips | bigint | Die Anzahl der Columnstore-Segmente, die bei der letzten Ausführung der Abfrage übersprungen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
min_columnstore_segment_skips | bigint | Die Mindestanzahl von Columnstore-Segmenten, die jemals während einer Ausführung von der Abfrage übersprungen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
max_columnstore_segment_skips | bigint | Die maximale Anzahl von Columnstore-Segmenten, die jemals während einer Ausführung von der Abfrage übersprungen wurden. Darf nicht NULL sein. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
total_spills | bigint | Die Gesamtanzahl der Seiten, die bei der Ausführung dieser Abfrage seit der Kompilierung übergelaufen wurden. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
last_spills | bigint | Die Anzahl der Seiten, die bei der letzten Ausführung der Abfrage übergelaufen sind. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
min_spills | bigint | Die Mindestanzahl von Seiten, die diese Abfrage jemals während einer einzelnen Ausführung übergelaufen hat. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
max_spills | bigint | Die maximale Anzahl von Seiten, die diese Abfrage jemals während einer einzelnen Ausführung übergelaufen hat. Gilt für: Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 |
pdw_node_id | int | Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet. Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW) |
total_page_server_reads | bigint | Die Gesamtanzahl der Lesevorgänge des Remoteseitenservers, die von ausführungen dieses Plans seit der Kompilierung ausgeführt wurden. Gilt für: Azure SQL Database Hyperscale |
last_page_server_reads | bigint | Anzahl der Remoteseitenserverlesungen, die bei der letzten Ausführung des Plans ausgeführt wurden. Gilt für: Azure SQL Database Hyperscale |
min_page_server_reads | bigint | Minimale Anzahl von Remoteseitenserver-Lesevorgängen, die dieser Plan jemals während einer einzelnen Ausführung ausgeführt hat. Gilt für: Azure SQL Database Hyperscale |
max_page_server_reads | bigint | Maximale Anzahl von Remoteseitenserverlesungen, die dieser Plan jemals während einer einzelnen Ausführung ausgeführt hat. Gilt für: Azure SQL Database Hyperscale |
Hinweis
1 Bei systemintern kompilierten gespeicherten Prozeduren, wenn die Statistiksammlung aktiviert ist, wird die Arbeitszeit in Millisekunden gesammelt. Wenn die Abfrage in weniger als einer Millisekunde ausgeführt wird, ist der Wert 0.
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für Standard-, S0- und S1-Dienstziele von SQL-Datenbank sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators, des Azure Active Directory-Administrators oder die Mitgliedschaft in der ##MS_ServerStateReader##
Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE
-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##
-Serverrolle erforderlich.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.
Bemerkungen
Statistiken in der Sicht werden nach Abschluss einer Abfrage aktualisiert.
Beispiele
A. Suchen der TOP-N-Abfragen
Das folgende Beispiel gibt Informationen über die „Top-Fünf“-Abfragen gemessen an durchschnittlicher CPU-Zeit zurück. Die Abfragen werden in diesem Beispiel anhand des Abfragehashes aggregiert, sodass logisch identische Abfragen basierend auf dem kumulierten Ressourcenverbrauch gruppiert werden. Die Spalte Sample_Statement_Text zeigt ein Beispiel für die Abfragestruktur, die mit dem Abfragehash übereinstimmt, sie sollte jedoch ohne Berücksichtigung bestimmter Werte in der Anweisung gelesen werden. Wenn eine -Anweisung z. B. enthält WHERE Id = 5
, können Sie sie in ihrer generischeren Form lesen: WHERE Id = @some_value
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 Sample_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;
B. Zurückgeben der aggregierten Zeilenanzahlen für eine Abfrage
Im folgenden Beispiel werden Informationen zu aggregierten Zeilenanzahlen (Gesamtanzahl der Zeilen, minimale Anzahl der Zeilen, maximale Anzahl der Zeilen und letzte Zeilen) für Abfragen zurückgegeben.
SELECT qs.execution_count,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
ELSE qs.statement_end_offset end -
qs.statement_start_offset
)/2
) AS query_text,
qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,
qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.text like '%SELECT%'
ORDER BY qs.execution_count DESC;
Siehe auch
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit der Ausführung (Transact-SQL)
sys.dm_exec_sql_text (Transact-SQL)
sys.dm_exec_query_plan (Transact-SQL)
sys.dm_exec_procedure_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)