Freigeben über


sys.dm_exec_procedure_stats (Transact-SQL)

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 eine SQL-Ablaufverfolgung mit einem Leistungsstatistikereignis ausgelöst, das mit sys.dm_exec_query_stats vergleichbar ist.

In Windows Azure SQL-Datenbank können dynamische Verwaltungssichten keine Informationen verfügbar machen, die sich auf die Datenbankkapselung 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 nicht zum verbundenen Mandanten gehören, herausgefiltert.

Hinweis

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

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version), Windows Azure SQL-Datenbank (ursprüngliche Version bis aktuelle Version).

Spaltenname

Datentyp

Beschreibung

database_id

int

ID der Datenbank, in der sich die gespeicherte Prozedur befindet.

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)

Kann zur Korrelation mit Abfragen in sys.dm_exec_query_stats verwendet werden, die aus dieser gespeicherten Prozedur heraus ausgeführt wurden.

plan_handle

varbinary(64)

Bezeichner für den speicherinternen Plan. Dieser Bezeichner ist vorübergehend und bleibt nur über die Cachespeicherdauer des Plans 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 Anzahl von Ausführungen der gespeicherten Prozedur seit der letzten Kompilierung.

total_worker_time

bigint

Die CPU-Gesamtzeit (in Mikrosekunden) für Ausführungen dieser gespeicherten Prozedur seit der Kompilierung.

Wenn zahlreiche Ausführungen weniger als 1 Millisekunde dauern, wird total_worker_time bei systemintern 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 bisherige minimale CPU-Zeit (in Mikrosekunden) für eine einzelne Ausführung dieser gespeicherten Prozedur. 1

max_worker_time

bigint

Die bisherige maximale CPU-Zeit (in Mikrosekunden) für eine einzelne Ausführung dieser gespeicherten Prozedur. 1

total_physical_reads

bigint

Die Gesamtanzahl physischer Lesevorgänge für Ausführungen dieser gespeicherten Prozedur 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 der gespeicherten Prozedur.

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 dieser gespeicherten Prozedur.

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 dieser gespeicherten Prozedur.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.

total_logical_writes

bigint

Die Gesamtanzahl logischer Schreibvorgänge für Ausführungen dieser gespeicherten Prozedur seit der Kompilierung.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.

last_logical_writes

bigint

Die Anzahl der Pufferpoolseiten, die seit der letzten Planausführung modifiziert wurden. 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 bisherige minimale Anzahl logischer Schreibvorgänge für eine einzelne Ausführung dieser gespeicherten Prozedur.

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 dieser gespeicherten Prozedur.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.

total_logical_reads

bigint

Die Gesamtanzahl logischer Lesevorgänge für Ausführungen dieser gespeicherten Prozedur 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 der gespeicherten Prozedur.

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 dieser gespeicherten Prozedur.

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 dieser gespeicherten Prozedur.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.

total_elapsed_time

bigint

Die insgesamt verstrichene Zeit (in Mikrosekunden) für abgeschlossene Ausführungen dieser gespeicherten Prozedur.

last_elapsed_time

bigint

Die verstrichene Zeit (in Mikrosekunden) für die letzte abgeschlossene Ausführung dieser gespeicherten Prozedur.

min_elapsed_time

bigint

Die mindestens verstrichene Zeit (in Mikrosekunden) für eine beliebige abgeschlossene Ausführung dieser gespeicherten Prozedur.

max_elapsed_time

bigint

Die maximal verstrichene Zeit (in Mikrosekunden) für eine beliebige abgeschlossene Ausführung dieser gespeicherten Prozedur.

1 Wenn die Statistiksammlung für systemintern kompilierte gespeicherte Prozeduren aktiviert ist, wird worker_time in Millisekunden erfasst. Wird die Abfrage in weniger als einer Millisekunde ausgeführt, lautet der Wert 0.

Berechtigungen

Erfordert die VIEW SERVER 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;

Siehe auch

Verweis

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

sys.dm_exec_sql_text (Transact-SQL)

sys.dm_exec_query_stats (Transact-SQL)

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)

sys.dm_exec_trigger_stats (Transact-SQL)