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)