sys.dm_exec_query_resource_semaphores (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
Retourne les informations sur l’état actuel du sémaphore de ressource de requête dans SQL Server. sys.dm_exec_query_resource_semaphores fournit l’état général de la mémoire d’exécution des requêtes et vous permet de déterminer si le système peut accéder à suffisamment de mémoire. Cette vue complète les informations de mémoire obtenues à partir de sys.dm_os_memory_clerks pour fournir une image complète de l’état de la mémoire du serveur. sys.dm_exec_query_resource_semaphores retourne une ligne pour le sémaphore de ressource standard et une autre ligne pour le sémaphore de ressource de petite requête. Il existe deux exigences pour un sémaphore de petite requête :
L’allocation de mémoire demandée doit être inférieure à 5 Mo
Le coût de la requête doit être inférieur à 3 unités de coût
Remarque
Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_exec_query_resource_semaphores
. 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 |
---|---|---|
resource_semaphore_id | smallint | ID non unique du sémaphore de ressource. 0 pour le sémaphore de ressource ordinaire et 1 pour le sémaphore de ressource de petites requêtes. |
target_memory_kb | bigint | Cible d'allocation d'utilisation en kilo-octets. |
max_target_memory_kb | bigint | Cible maximale potentielle en kilo-octets. NULL pour le sémaphore de ressource de petites requêtes. |
total_memory_kb | bigint | Mémoire détenue par le sémaphore de ressource, en kilo-octets. Si le système est sous pression mémoire ou si la mémoire minimale forcée est accordée fréquemment, cette valeur peut être supérieure aux valeurs target_memory_kb ou max_target_memory_kb . La mémoire totale est la somme de la mémoire disponible et de la mémoire allouée. |
available_memory_kb | bigint | Mémoire disponible pour une nouvelle allocation, en kilo-octets. |
granted_memory_kb | bigint | Mémoire totale allouée, en kilo-octets. |
used_memory_kb | bigint | Partie de la mémoire allouée utilisée physiquement, en kilo-octets. |
grantee_count | int | Nombre de requêtes actives dont l'allocation est satisfaite. |
waiter_count | int | Nombre de requêtes attendant que leur allocation soit satisfaite. |
timeout_error_count | bigint | Nombre total d'erreurs de dépassement de délai d'attente depuis le démarrage du serveur. NULL pour le sémaphore de ressource de petites requêtes. |
forced_grant_count | bigint | Nombre total d'allocations de mémoire minimale forcées depuis le démarrage du serveur. NULL pour le sémaphore de ressource de petites requêtes. |
pool_id | int | ID du pool de ressources auquel ce sémaphore de ressource appartient. |
pdw_node_id | int | S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW) Identificateur du nœud sur lequel cette distribution est activée. |
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 requêtes qui utilisent des vues de gestion dynamiques qui incluent ORDER BY ou des fonctions d'agrégation peuvent accroître la consommation de mémoire et par conséquent contribuer au problème qu'elles tentent de résoudre.
Utilisez sys.dm_exec_query_resource_semaphores pour résoudre les problèmes, mais ne l’incluez pas dans les applications qui utiliseront les futures versions de SQL Server.
La fonctionnalité Gouverneur de ressources permet à un administrateur de base de données de répartir des ressources serveur entre plusieurs pools de ressources (64 pools au maximum). Dans SQL Server 2012 (11.x) et versions ultérieures, chaque pool se comporte comme une petite instance de serveur indépendante et nécessite 2 sémaphores.
Voir aussi
Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)
sys.dm_exec_query_memory_grants (Transact-SQL)