sys.dm_exec_function_stats (Transact-SQL)
Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
Gibt die Aggregatleistungsstatistik für zwischengespeicherte Funktionen zurück. Diese Sicht gibt eine Zeile für jeden Plan der zwischengespeicherten Funktion zurück, und die Lebensdauer der Zeile entspricht der Verweildauer der Funktion im Cache. Bei Entfernung einer Funktion aus dem Cache wird die entsprechende Zeile aus dieser Sicht gelöscht. Zu diesem Zeitpunkt wird ein Leistungsstatistik-SQL-Ablaufverfolgungsereignis ausgelöst, das sys.dm_exec_query_statsentspricht. Gibt Informationen zu Skalarfunktionen zurück, einschließlich Speicherfunktionen und CLR-Skalarfunktionen. Gibt keine Informationen zu Tabellenwertfunktionen und zu Skalarfunktionen zurück, die mit Skalares UDF-Inlining eingebettet sind.
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_function_stats können bei jeder Ausführung variieren, da die Daten nur abgeschlossene Abfragen widerspiegeln, nicht aber solche, die noch im Gange sind.
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_id | int | ID der Datenbank, in der sich die Funktion 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 Funktion. |
type | char(2) | Typ des Objekts: FN = Skalarwertfunktionen |
type_desc | nvarchar(60) | Beschreibung des Objekttyps: SQL_SCALAR_FUNCTION |
sql_handle | varbinary(64) | Kann zur Korrelation mit Abfragen in sys.dm_exec_query_stats verwendet werden, die aus dieser Funktion 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 Funktion eine speicheroptimierte Tabelle abfragt. |
cached_time | datetime | Der Zeitpunkt, zu dem die Funktion dem Cache hinzugefügt wurde. |
last_execution_time | datetime | Der Zeitpunkt, zu dem die Funktion zuletzt ausgeführt wurde. |
execution_count | bigint | Die Anzahl von Funktionsausführungen seit der letzten Kompilierung. |
total_worker_time | bigint | Die CPU-Gesamtzeit (in Mikrosekunden) für Ausführungen dieser Funktion seit der Kompilierung. Wenn zahlreiche Ausführungen weniger als 1 Millisekunde dauern, wird total_worker_time bei nativ kompilierten Funktionen u.U. nicht exakt angegeben. |
last_worker_time | bigint | CPU-Zeit (in Mikrosekunden) für die letzte Ausführung der Funktion. 1 |
min_worker_time | bigint | Bisherige minimale CPU-Zeit (in Mikrosekunden) für eine einzelne Ausführung dieser Funktion. 1 |
max_worker_time | bigint | Bisherige maximale CPU-Zeit (in Mikrosekunden) für eine einzelne Ausführung dieser Funktion. 1 |
total_physical_reads | bigint | Die Gesamtanzahl physischer Lesevorgänge für Ausführungen dieser Funktion seit der Kompilierung. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_physical_reads | bigint | Anzahl physischer Lesevorgänge bei der letzten Ausführung der Funktion. 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 Funktion. 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 Funktion. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_writes | bigint | Die Gesamtanzahl logischer Schreibvorgänge für Ausführungen dieser Funktion 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 Funktion. 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 Funktion. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_logical_reads | bigint | Die Gesamtanzahl logischer Lesevorgänge für Ausführungen dieser Funktion seit der Kompilierung. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
last_logical_reads | bigint | Anzahl logischer Lesevorgänge bei der letzten Ausführung der Funktion. 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 Funktion. 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 Funktion. Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird. |
total_elapsed_time | bigint | Insgesamt verstrichene Zeit (in Mikrosekunden) für abgeschlossene Ausführungen dieser Funktion. |
last_elapsed_time | bigint | Verstrichene Zeit (in Mikrosekunden) für die letzte abgeschlossene Ausführung dieser Funktion. |
min_elapsed_time | bigint | Mindestens verstrichene Zeit (in Mikrosekunden) für eine beliebige abgeschlossene Ausführung dieser Funktion. |
max_elapsed_time | bigint | Maximal verstrichene Zeit (in Mikrosekunden) für eine beliebige abgeschlossene Ausführung dieser Funktion. |
total_page_server_reads | bigint | Die Gesamtanzahl der Page-Server-Lesevorgänge für Ausführungen dieser Funktion seit der Kompilierung. Gilt für: Azure SQL-Datenbank Hyperscale. |
last_page_server_reads | bigint | Anzahl der Page-Server-Lesevorgänge, die bei der letzten Ausführung der Funktion durchgeführt wurden. Gilt für: Azure SQL-Datenbank Hyperscale. |
min_page_server_reads | bigint | Mindestanzahl der Page-Server-Lesevorgänge, die diese Funktion jemals während einer einzigen Ausführung durchgeführt hat. Gilt für: Azure SQL-Datenbank Hyperscale. |
max_page_server_reads | bigint | Maximale Anzahl der Page-Server-Lesevorgänge, die diese Funktion jemals während einer einzigen Ausführung durchgeführt hat. Gilt für: Azure SQL-Datenbank Hyperscale. |
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.
Beispiele
Das folgende Beispiel gibt Informationen zu den 10 Funktionen mit der höchsten durchschnittlich verstrichenen Zeit zurück.
SELECT TOP 10 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'function 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_function_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_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_procedure_stats (Transact-SQL)