Partage via


sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)

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

Retourne l’état actuel des sémaphores de ressources utilisés pour limiter l’optimisation des requêtes simultanées.

Colonne Type Description
pool_id int ID du pool de ressources sous Resource Governor
nom sysname Compiler le nom de la porte (Petite Passerelle, Passerelle moyenne, Big Gateway)
max_count int Nombre maximal configuré de compilations simultanées
active_count int Nombre actuel de compilations dans cette porte
waiter_count int Nombre de serveurs dans cette porte
threshold_factor bigint Facteur de seuil qui définit la partie mémoire maximale utilisée par l’optimisation des requêtes. Pour la petite passerelle, threshold_factor indique l’utilisation maximale de la mémoire de l’optimiseur en octets pour une requête avant d’avoir besoin d’obtenir un accès dans la petite passerelle. Pour la passerelle moyenne et volumineuse, threshold_factor affiche la partie de la mémoire totale du serveur disponible pour cette porte. Il est utilisé comme diviseur lors du calcul du seuil d’utilisation de la mémoire pour la porte.
threshold bigint Mémoire seuil suivante en octets. La requête est requise pour obtenir un accès à cette passerelle si sa consommation de mémoire atteint ce seuil. « -1 » si la requête n’est pas nécessaire pour accéder à cette passerelle.
is_active bit Indique si la requête est requise pour passer la porte actuelle ou non.

autorisations

SQL Server nécessite l’autorisation VIEW SERVER STATE sur le serveur.

Azure SQL Database nécessite l’autorisation VIEW DATABASE STATE dans la base de données.

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

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

Notes

SQL Server utilise une approche de passerelle hiérarchisé pour limiter le nombre de compilations simultanées autorisées. Trois passerelles sont utilisées, y compris les petites, moyennes et grandes. Les passerelles permettent d’empêcher l’épuisement des ressources de mémoire globales en augmentant la mémoire de compilation nécessitant des consommateurs.

L’attente sur une passerelle entraîne une compilation différée. En plus des retards de compilation, les requêtes limitées auront un RESOURCE_SEMAPHORE_QUERY_COMPILE accumulation de type d’attente associée. Le type d’attente RESOURCE_SEMAPHORE_QUERY_COMPILE peut indiquer que les requêtes utilisent une grande quantité de mémoire pour la compilation et que la mémoire a été épuisée, ou qu’il existe également suffisamment de mémoire disponible dans l’ensemble, mais les unités disponibles dans une passerelle spécifique ont été épuisées. La sortie de sys.dm_exec_query_optimizer_memory_gateways peut être utilisée pour résoudre les scénarios où la mémoire était insuffisante pour compiler un plan d’exécution de requête.

Exemples

R. Affichage des statistiques sur les sémaphores de ressources

Quelles sont les statistiques actuelles de la passerelle de mémoire de l’optimiseur pour cette instance de SQL Server ?

SELECT [pool_id], [name], [max_count], [active_count],
       [waiter_count], [threshold_factor], [threshold],
       [is_active]
FROM sys.dm_exec_query_optimizer_memory_gateways;   

Voir aussi

Fonctions et vues de gestion dynamique (Transact-SQL)
Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)
Comment utiliser la commande DBCC MEMORYSTATUS pour surveiller l’utilisation de la mémoire sur la compilation de requêtes volumineuses SQL Server 2005attend RESOURCE_SEMAPHORE_QUERY_COMPILE dans SQL Server 2014