sys.dm_exec_procedure_stats (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Gibt die zusammengefasste Leistungsstatistik für zwischengespeicherte gespeicherte Prozeduren zurück. Diese Sicht gibt eine Zeile für jeden Plan der zwischengespeicherten gespeicherten Prozedur zurück, und die Lebensdauer der Zeile entspricht der Verweildauer der gespeicherten Prozedur im Cache. Bei Entfernung einer gespeicherten Prozedur aus dem Cache wird die entsprechende Zeile aus dieser Sicht gelöscht. Zu diesem Zeitpunkt wird das query_cache_removal_statistics
Ereignis ähnlich wie sys.dm_exec_query_stats für SQL Server und Azure SQL verwaltete Instanz ausgelöst.
In Azure SQL-Datenbank können dynamische Verwaltungssichten keine Informationen verfügbar machen, die sich auf den Datenbankeinschluss auswirken würden oder die sich auf andere Datenbanken beziehen, auf die der Benutzer Zugriff hat. Um zu vermeiden, dass diese Informationen verfügbar gemacht werden, wird jede Zeile mit Daten, die zum verbundenen Mandanten gehören, herausgefiltert.
Hinweis
Die Ergebnisse von sys.dm_exec_procedure_stats können je nach Ausführung variieren, da die Daten nur abgeschlossene Abfragen und nicht die abfragen, die noch im Test-Flight enthalten sind.
Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_exec_procedure_stats
. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_id | int | ID der Datenbank, in der sich die gespeicherte Prozedur befindet. In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers. |
object_id | int | Objekt-ID der gespeicherten Prozedur. |
type | char(2) | Der Objekttyp: P = Gespeicherte SQL-Prozedur PC = Gespeicherte Assemblyprozedur (CLR) X = Erweiterte gespeicherte Prozedur |
type_desc | nvarchar(60) | Beschreibung des Objekttyps: SQL_STORED_PROCEDURE CLR_STORED_PROCEDURE EXTENDED_STORED_PROCEDURE |
sql_handle | varbinary(64) | Dies kann verwendet werden, um Abfragen in sys.dm_exec_query_stats zu korrelieren, die aus dieser gespeicherten Prozedur ausgeführt wurden. |
plan_handle | varbinary(64) | Bezeichner für den speicherinternen Plan. Dieser Bezeichner ist vorübergehend und bleibt nur für die Dauer der Speicherung des Plans im Cache konstant. Dieser Wert kann mit der dynamischen Verwaltungssicht sys.dm_exec_cached_plans verwendet werden. Ist immer 0x000, wenn eine systemintern kompilierte gespeicherte Prozedur eine speicheroptimierte Tabelle abfragt. |
cached_time | datetime | Der Zeitpunkt, zu dem die gespeicherte Prozedur dem Cache hinzugefügt wurde. |
last_execution_time | datetime | Der Zeitpunkt, zu dem die gespeicherte Prozedur zuletzt ausgeführt wurde. |
execution_count | bigint | Die Häufigkeit, mit der die gespeicherte Prozedur seit der letzten Kompilierung ausgeführt wurde. |
total_worker_time | bigint | Die Gesamtdauer der CPU-Zeit in Mikrosekunden, die von Ausführungen dieser gespeicherten Prozedur seit der Kompilierung verbraucht wurde. 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) für die letzte Ausführung der gespeicherten Prozedur. 1 |
min_worker_time | bigint | Die minimale CPU-Zeit in Mikrosekunden, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals verbraucht hat. 1 |
max_worker_time | bigint | Die maximale CPU-Zeit in Mikrosekunden, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals verbraucht hat. 1 |
total_physical_reads | bigint | Die Gesamtzahl der physischen Lesevorgänge, die von Ausführungen dieser gespeicherten Prozedur seit der Kompilierung ausgeführt wurden. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_physical_reads | bigint | Die Anzahl der physischen Lesevorgänge, die beim letzten Ausführen der gespeicherten Prozedur ausgeführt wurden. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
min_physical_reads | bigint | Die Mindestanzahl physischer Lesevorgänge, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_physical_reads | bigint | Die maximale Anzahl physischer Lesevorgänge, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_writes | bigint | Die Gesamtzahl der logischen Schreibvorgänge, die von Ausführungen dieser gespeicherten Prozedur seit der Kompilierung ausgeführt wurden. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_logical_writes | bigint | Die Anzahl der Pufferpoolseiten wurde beim letzten Ausführen des Plans schmutzig. Wenn eine Seite bereits modifiziert (geändert) wurde, werden keine Schreibvorgänge gezählt. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
min_logical_writes | bigint | Die minimale Anzahl von logischen Schreibvorgängen, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_logical_writes | bigint | Die maximale Anzahl logischer Schreibvorgänge, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_reads | bigint | Die Gesamtzahl der logischen Lesevorgänge, die von Ausführungen dieser gespeicherten Prozedur seit der Kompilierung ausgeführt wurden. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_logical_reads | bigint | Die Anzahl der logischen Lesevorgänge, die beim letzten Ausführen der gespeicherten Prozedur ausgeführt wurden. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
min_logical_reads | bigint | Die Mindestanzahl der logischen Lesevorgänge, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
max_logical_reads | bigint | Die maximale Anzahl logischer Lesevorgänge, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt hat. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_elapsed_time | bigint | Die gesamt verstrichene Zeit in Mikrosekunden für abgeschlossene Ausführung dieser gespeicherten Prozedur. |
last_elapsed_time | bigint | Die verstrichene Zeit in Mikrosekunden für die zuletzt abgeschlossene Ausführung dieser gespeicherten Prozedur. |
min_elapsed_time | bigint | Die minimale verstrichene Zeit in Mikrosekunden für jede abgeschlossene Ausführung dieser gespeicherten Prozedur. |
max_elapsed_time | bigint | Die maximale verstrichene Zeit in Mikrosekunden für jede abgeschlossene Ausführung dieser gespeicherten Prozedur. |
total_spills | bigint | Die Gesamtzahl der Seiten, die von der Ausführung dieser gespeicherten Prozedur seit der Kompilierung übergelaufen sind. Gilt für: Ab SQL Server 2017 (14.x) CU3 |
last_spills | bigint | Die Anzahl der Seiten, die beim letzten Ausführen der gespeicherten Prozedur übergelaufen sind. Gilt für: Ab SQL Server 2017 (14.x) CU3 |
min_spills | bigint | Die minimale Anzahl von Seiten, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals übergelaufen hat. Gilt für: Ab SQL Server 2017 (14.x) CU3 |
max_spills | bigint | Die maximale Anzahl von Seiten, die diese gespeicherte Prozedur während einer einzelnen Ausführung jemals übergelaufen hat. Gilt für: Ab 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 Gesamtzahl der Seitenserverlesevorgänge, die von Ausführungen dieser gespeicherten Prozedur seit der Kompilierung ausgeführt werden. Gilt für: Azure SQL-Datenbank Hyperscale |
last_page_server_reads | bigint | Die Anzahl der Seitenserverlesungen, die beim letzten Ausführen der gespeicherten Prozedur ausgeführt wurden. Gilt für: Azure SQL-Datenbank Hyperscale |
min_page_server_reads | bigint | Die Mindestanzahl der Seitenserver liest, dass diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt wurde. Gilt für: Azure SQL-Datenbank Hyperscale |
max_page_server_reads | bigint | Die maximale Anzahl von Seitenservern liest, dass diese gespeicherte Prozedur während einer einzelnen Ausführung jemals ausgeführt wurde. Gilt für: Azure SQL-Datenbank Hyperscale |
1 Bei nativ kompilierten gespeicherten Prozeduren, wenn die Statistiksammlung aktiviert ist, werden die Arbeitszeiten in Millisekunden gesammelt. Wird die Abfrage in weniger als einer Millisekunde ausgeführt, lautet der Wert 0.
Berechtigungen
Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE
-Berechtigung erforderlich.
Für die SQL-Datenbank-Ziele Basic, S0 und S1 sowie für Datenbanken in Pools für elastische Datenbanken ist das Konto des Serveradministrators oder des Microsoft Entra-Administratorkontos 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.
Hinweise
Die Statistik in der Sicht wird aktualisiert, wenn die Ausführung einer gespeicherten Prozedur abgeschlossen ist.
Beispiele
Das folgende Beispiel gibt Informationen zu den 10 gespeicherten Prozeduren mit der höchsten durchschnittlich verstrichenen Zeit zurück.
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'proc name',
d.cached_time, d.last_execution_time, d.total_elapsed_time,
d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
ORDER BY [total_worker_time] DESC;
Weitere Informationen
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_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)