sys.dm_exec_query_resource_semaphores (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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)