Freigeben über


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)