sys.dm_exec_function_stats (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance

Renvoie les statistiques sur les performances des agrégats pour les fonctions mises en cache. La vue renvoie une ligne pour chaque plan de fonction mise en cache et la durée de vie de la ligne correspond à celle pendant laquelle la fonction reste mise en cache. Lorsqu'une fonction est supprimée du cache, la ligne correspondante est éliminée de cette vue. À ce stade, un événement de trace SQL des statistiques de performances est déclenché comme sys.dm_exec_query_stats. Renvoie des informations sur les fonctions scalaires, notamment les fonctions en mémoire et les fonctions scalaires CLR. Ne retourne pas d’informations sur les fonctions table et sur les fonctions scalaires insérées avec Scalar UDF Inlining.

Dans Azure SQL Database, les vues de gestion dynamique ne peuvent pas exposer des informations qui auraient un impact sur le confinement de la base de données ou exposer des informations sur d’autres bases de données auxquelles l’utilisateur a accès. Pour éviter d’exposer ces informations, chaque ligne qui contient des données qui n’appartiennent pas au locataire connecté est filtrée.

Remarque

Les résultats de sys.dm_exec_function_stats peuvent varier avec chaque exécution, car les données reflètent uniquement les requêtes terminées, et non celles en cours d’exécution.

Nom de la colonne Type de données Description
database_id int L’identificateur de base de données dans lequel réside la fonction.

Dans la base de données Azure SQL, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique.
object_id int Numéro d'identification d'objet de la fonction.
type char(2) Type de l’objet : FN = Fonctions valeur scalaires
type_desc nvarchar(60) Description du type d’objet : SQL_SCALAR_FUNCTION
sql_handle varbinary(64) Cela peut être utilisé pour mettre en corrélation les requêtes dans sys.dm_exec_query_stats exécutées à partir de cette fonction.
plan_handle varbinary(64) Identificateur du plan en mémoire. Cet identificateur est temporaire et il reste constant uniquement tant que le plan est dans le cache. Cette valeur peut être utilisée avec la vue de gestion dynamique sys.dm_exec_cached_plans.

Sa valeur est toujours 0x000 lorsqu'une fonction compilée en mode natif interroge une table optimisée en mémoire.
cached_time datetime Heure à laquelle la fonction a été ajoutée au cache.
last_execution_time datetime Heure de dernière exécution de la fonction.
execution_count bigint Nombre d'exécutions de la fonction depuis sa dernière compilation.
total_worker_time bigint Quantité totale de temps CPU, en microsecondes, qui a été consommée par les exécutions de cette fonction depuis sa compilation.

Pour les fonctions compilées en mode natif, total_worker_time peut être inexact si plusieurs exécutions sont réalisées en moins d’une milliseconde.
last_worker_time bigint Temps processeur, en microsecondes, consommé lors de la dernière exécution de la fonction. 1
min_worker_time bigint Temps processeur minimal, en microsecondes, que cette fonction a jamais consommée pendant une seule exécution. 1
max_worker_time bigint Temps processeur CPU maximum, en microsecondes, que cette fonction a jamais consommé au cours d’une seule exécution. 1
total_physical_reads bigint Nombre total de lectures physiques effectuées par les exécutions de cette fonction depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_physical_reads bigint Nombre de lectures physiques effectuées lors de la dernière exécution de la fonction.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_physical_reads bigint Nombre minimal de lectures physiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_physical_reads bigint Nombre maximal de lectures physiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_logical_writes bigint Nombre total d'écritures logiques effectuées par les exécutions de cette fonction depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_logical_writes bigint Numéro du nombre de pages du pool de mémoires tampons modifiées lors de la dernière exécution du plan. Si une page est déjà modifiée, aucune écriture n'est comptée.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_logical_writes bigint Nombre minimal d'écritures logiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_logical_writes bigint Nombre maximal d'écritures logiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_logical_reads bigint Nombre total de lectures logiques effectuées par les exécutions de cette fonction depuis sa compilation.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
last_logical_reads bigint Nombre de lectures logiques effectuées lors de la dernière exécution de la fonction.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
min_logical_reads bigint Nombre minimal de lectures logiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
max_logical_reads bigint Nombre maximal de lectures logiques effectuées par cette fonction lors d'une seule exécution.

Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire.
total_elapsed_time bigint Temps écoulé total, en microsecondes, pour les exécutions terminées de cette fonction.
last_elapsed_time bigint Temps écoulé, en microsecondes, pour la dernière exécution de cette fonction.
min_elapsed_time bigint Temps écoulé minimal, en microsecondes, pour toute exécution terminée de cette fonction.
max_elapsed_time bigint Temps maximum écoulé, en microsecondes, pour toute exécution terminée de cette fonction.
total_page_server_reads bigint Nombre total de pages lues par le serveur par exécution de cette fonction depuis sa compilation.

S’applique à : Azure SQL Database Hyperscale.
last_page_server_reads bigint Nombre de lectures du serveur de page effectuées la dernière fois que la fonction a été exécutée.

S’applique à : Azure SQL Database Hyperscale.
min_page_server_reads bigint Le nombre minimum de pages lues par le serveur indique que cette fonction n’a jamais été exécutée au cours d’une seule exécution.

S’applique à : Azure SQL Database Hyperscale.
max_page_server_reads bigint Le nombre maximum de pages lues par le serveur indique que cette fonction n’a jamais été exécutée au cours d’une seule exécution.

S’applique à : Azure SQL Database Hyperscale.

autorisations

Sur SQL Server et SQL Managed Instance, l’autorisation VIEW SERVER STATE est requise.

Sur les objectifs de service SQL Database Basic, S0 et S1, et pour les bases de données dans les pools élastiques, le compte d’administration du serveur, le compte d’administration Microsoft Entra ou l’appartenance dans ##MS_ServerStateReader## au rôle de serveur est requis. Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Exemples

L'exemple suivant retourne des informations sur les dix principales fonctions identifiées d'après le temps moyen écoulé.

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;  

Voir aussi

Fonctions et vues de gestion dynamique relatives à l'exécution (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)