sys.dm_exec_procedure_stats (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Retourne les statistiques sur les performances des agrégats pour les procédures stockées mises en cache. La vue retourne une ligne pour chaque plan de procédure stockée mise en cache et la durée de vie de la ligne correspond à celle pendant laquelle la procédure stockée reste mise en cache. Lorsqu'une procédure stockée est supprimée du cache, la ligne correspondante est éliminée de cette vue. À ce stade, l’événement query_cache_removal_statistics
est déclenché comme sys.dm_exec_query_stats pour SQL Server et Azure SQL Managed Instance.
Dans Azure SQL Database, les vues de gestion dynamique ne peuvent pas exposer les informations susceptibles d’avoir un impact sur le contenu de la base de données ou d’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_procedure_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.
Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_exec_procedure_stats
. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
Nom de la colonne | Type de données | Description |
---|---|---|
database_id | int | ID de base de données dans lequel réside la procédure stockée. Dans Azure SQL Database, 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 procédure stockée. |
type | char(2) | Type de l'objet : P = Procédure stockée SQL PC = Procédure stockée d'assembly (CLR) X = Procédure stockée étendue |
type_desc | nvarchar(60) | Description du type d'objet : SQL_STORED_PROCEDURE CLR_STORED_PROCEDURE EXTENDED_STORED_PROCEDURE |
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 procédure stockée. |
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 procédure stockée compilée en mode natif interroge une table optimisée en mémoire. |
cached_time | datetime | Heure à laquelle la procédure stockée a été ajoutée au cache. |
last_execution_time | datetime | Heure de dernière exécution de la procédure stockée. |
execution_count | bigint | Nombre de fois où la procédure stockée a été exécutée depuis sa dernière compilation. |
total_worker_time | bigint | Durée totale du processeur, en microsecondes, consommée par les exécutions de cette procédure stockée depuis sa compilation. Pour les procédures stockées 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 procédure stockée. 1 |
min_worker_time | bigint | Temps processeur minimal, en microsecondes, que cette procédure stockée a jamais consommée pendant une seule exécution. 1 |
max_worker_time | bigint | Temps processeur maximal, en microsecondes, que cette procédure stockée a jamais consommée pendant une seule exécution. 1 |
total_physical_reads | bigint | Nombre total de lectures physiques effectuées par les exécutions de cette procédure stockée 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 la dernière fois que la procédure stockée a été exécutée. 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 que cette procédure stockée a jamais effectuées pendant 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 que cette procédure stockée a jamais effectuées pendant 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 procédure stockée depuis sa compilation. Sa valeur est toujours 0 lors de l'interrogation d'une table optimisée en mémoire. |
last_logical_writes | bigint | Le nombre de pages du pool de mémoires tampons a écillé la dernière fois que le plan a été exécuté. 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 que cette procédure stockée a jamais effectuées pendant 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 que cette procédure stockée a jamais effectuées pendant 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 procédure stockée 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 la dernière fois que la procédure stockée a été exécutée. 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 que cette procédure stockée a jamais effectuées pendant 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 que cette procédure stockée a jamais effectuées pendant 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 procédure stockée. |
last_elapsed_time | bigint | Temps écoulé, en microsecondes, pour l’exécution la plus récente de cette procédure stockée. |
min_elapsed_time | bigint | Temps minimal écoulé, en microsecondes, pour toute exécution terminée de cette procédure stockée. |
max_elapsed_time | bigint | Temps écoulé maximal, en microsecondes, pour toute exécution terminée de cette procédure stockée. |
total_spills | bigint | Nombre total de pages déversées par l’exécution de cette procédure stockée depuis sa compilation. S’applique à : à partir de SQL Server 2017 (14.x) CU3 |
last_spills | bigint | Le nombre de pages a déversé la dernière fois que la procédure stockée a été exécutée. S’applique à : à partir de SQL Server 2017 (14.x) CU3 |
min_spills | bigint | Nombre minimal de pages que cette procédure stockée a jamais déversées pendant une seule exécution. S’applique à : à partir de SQL Server 2017 (14.x) CU3 |
max_spills | bigint | Nombre maximal de pages que cette procédure stockée a jamais déversées pendant une seule exécution. S’applique à : à partir de SQL Server 2017 (14.x) CU3 |
pdw_node_id | int | Identificateur du nœud sur lequel cette distribution est activée. S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW) |
total_page_server_reads | bigint | Nombre total de lectures de serveur de pages effectuées par les exécutions de cette procédure stockée depuis sa compilation. S’applique à : Azure SQL Database Hyperscale |
last_page_server_reads | bigint | Nombre de lectures de serveur de pages effectuées la dernière fois que la procédure stockée a été exécutée. S’applique à : Azure SQL Database Hyperscale |
min_page_server_reads | bigint | Le nombre minimal de serveurs de pages lit que cette procédure stockée a jamais effectuée pendant une seule exécution. S’applique à : Azure SQL Database Hyperscale |
max_page_server_reads | bigint | Le nombre maximal de serveurs de pages lit que cette procédure stockée a jamais effectuée pendant une seule exécution. S’applique à : Azure SQL Database Hyperscale |
1 Pour les procédures stockées compilées en mode natif lorsque la collecte de statistiques est activée, le temps de travail est collecté en millisecondes. Si la requête s'exécute en moins d'une milliseconde, la valeur est 0.
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 des pools élastiques, le compte d’administrateur du serveur, le compte d’administrateur Microsoft Entra ou l’appartenance au ##MS_ServerStateReader##
rôle 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.
Notes
Les statistiques de la vue sont mises à jour lorsqu'une exécution de procédure stockée se termine.
Exemples
L'exemple suivant retourne des informations sur les dix principales procédures stockées identifiées d'après le temps moyen écoulé.
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;
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_plan (Transact-SQL)
sys.dm_exec_query_stats (Transact-SQL)
sys.dm_exec_trigger_stats (Transact-SQL)
sys.dm_exec_cached_plans (Transact-SQL)