sys.dm_exec_function_stats (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-DatenbankAzure SQL Managed Instance

Gibt aggregierte Leistungsstatistiken für zwischengespeicherte Funktionen zurück. Die Ansicht gibt eine Zeile für jeden zwischengespeicherten Funktionsplan zurück, und die Lebensdauer der Zeile ist solange, wie die Funktion neu Standard zwischengespeichert ist. Wenn eine Funktion aus dem Cache entfernt wird, wird die entsprechende Zeile aus dieser Ansicht entfernt. 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 skalaren Funktionen zurück, die mit Scalar UDF Inlining inlined sind.

In Azure SQL-Datenbank können dynamische Verwaltungsansichten keine Informationen verfügbar machen, die sich auf das Eindämmen von Datenbanken auswirken oder Informationen zu anderen Datenbanken verfügbar machen, auf die der Benutzer zugreifen kann. Um diese Informationen nicht verfügbar zu machen, wird jede Zeile mit Daten, die nicht zum verbundenen Mandanten gehören, herausgefiltert.

Hinweis

Die Ergebnisse von sys.dm_exec_function_stats können je nach Ausführung variieren, da die Daten nur abgeschlossene Abfragen und keine abfragen, die noch im Test-Flight enthalten sind.

Spaltenname Datentyp Beschreibung
database_id int Datenbank-ID, in der sich die Funktion befindet.

In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers.
object_id int Objektidentifikationsnummer der Funktion.
type char(2) Typ des Objekts: FN = Skalare Wertfunktionen
type_desc nvarchar(60) Beschreibung des Objekttyps: SQL_SCALAR_FUNCTION
Sql_handle varbinary(64) Dies kann verwendet werden, um Abfragen in sys.dm_exec_query_stats zu korrelieren, die in 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.

Wird immer 0x000, wenn eine systemeigene kompilierte Funktion eine speicheroptimierte Tabelle abfragt.
cached_time datetime Zeit, zu der die Funktion dem Cache hinzugefügt wurde.
last_execution_time datetime Letzter Zeitpunkt, zu dem die Funktion ausgeführt wurde.
execution_count bigint Häufigkeit, mit der die Funktion seit der letzten Kompilierung ausgeführt wurde.
total_worker_time bigint Die Gesamtdauer der CPU-Zeit in Mikrosekunden, die von Ausführungen dieser Funktion seit der Kompilierung verbraucht wurde.

Bei systemeigenen kompilierten Funktionen ist total_worker_time möglicherweise nicht genau, wenn viele Ausführungen weniger als 1 Millisekunden dauern.
last_worker_time bigint CPU-Zeit in Mikrosekunden, die beim letzten Ausführen der Funktion verbraucht wurde. 1
min_worker_time bigint Minimale CPU-Zeit in Mikrosekunden, die diese Funktion während einer einzigen Ausführung jemals verbraucht hat. 1
max_worker_time bigint Maximale CPU-Zeit in Mikrosekunden, die diese Funktion 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 Funktion 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 Funktion ausgeführt wurden.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
min_physical_reads bigint Minimale Anzahl physischer Lesevorgänge, die diese Funktion während einer einzelnen Ausführung jemals ausgeführt hat.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
max_physical_reads bigint Maximale Anzahl physischer Lesevorgänge, die diese Funktion 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 Funktion seit der Kompilierung ausgeführt wurden.

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 Minimale Anzahl logischer Schreibvorgänge, die diese Funktion während einer einzelnen Ausführung jemals ausgeführt hat.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
max_logical_writes bigint Maximale Anzahl logischer Schreibvorgänge, die diese Funktion 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 Funktion 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 Funktion ausgeführt wurden.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
min_logical_reads bigint Minimale Anzahl logischer Lesevorgänge, die diese Funktion während einer einzelnen Ausführung jemals ausgeführt hat.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
max_logical_reads bigint Maximale Anzahl logischer Lesevorgänge, die diese Funktion während einer einzelnen Ausführung jemals ausgeführt hat.

Ist immer 0, wenn eine speicheroptimierte Tabelle abgefragt wird.
total_elapsed_time bigint Gesamtverstrichene Zeit in Mikrosekunden für abgeschlossene Ausführung dieser Funktion.
last_elapsed_time bigint Verstrichene Zeit in Mikrosekunden für die zuletzt abgeschlossene Ausführung dieser Funktion.
min_elapsed_time bigint Mindestens verstrichene Zeit in Mikrosekunden für jede abgeschlossene Ausführung dieser Funktion.
max_elapsed_time bigint Maximale verstrichene Zeit in Mikrosekunden für jede abgeschlossene Ausführung dieser Funktion.
total_page_server_reads bigint Die Gesamtzahl der Seitenserverlesevorgänge, die von Ausführungen dieser Funktion seit der Kompilierung ausgeführt wurden.

Gilt für: Azure SQL-Datenbank Hyperscale.
last_page_server_reads bigint Die Anzahl der Seitenserverlesungen, die beim letzten Ausführen der Funktion ausgeführt wurden.

Gilt für: Azure SQL-Datenbank Hyperscale.
min_page_server_reads bigint Die Minimale Anzahl von Seitenservern liest, dass diese Funktion 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 Funktion während einer einzelnen Ausführung jemals ausgeführt wurde.

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 SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto 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

Im folgenden Beispiel werden Informationen zu den zehn wichtigsten Funktionen zurückgegeben, die durchschnittliche verstrichene Zeit identifiziert werden.

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)