sys.dm_exec_query_optimizer_memory_gateways (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure 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
name sysname Nom de la porte de compilation (petite passerelle, passerelle moyenne, grande passerelle)
max_count int Nombre maximal configuré de compilations simultanées
active_count int Le nombre actif 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 qu’elle ne soit nécessaire pour obtenir un accès dans la petite passerelle. Pour la passerelle moyenne et grande, 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 suivant en octets. La requête est nécessaire pour accéder à 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 Base de données nécessite l’autorisation VIEW DATABASE STATE dans la base de données.

Autorisations pour SQL Server 2022 et versions ultérieures

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, dont les petites, les moyennes et les grandes. Les passerelles permettent d’éviter l’épuisement des ressources de mémoire globales grâce à l’augmentation de la quantité de mémoire de compilation nécessitant des consommateurs.

Les attentes sur une passerelle entraînent un retard de compilation. En plus des retards de compilation, les demandes limitées auront une accumulation de type d’attente RESOURCE_SEMAPHORE_QUERY_COMPILE associée. Le RESOURCE_SEMAPHORE_QUERY_COMPILE type d’attente 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 une mémoire suffisante 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 SQL Server grande requête 2005attend sur RESOURCE_SEMAPHORE_QUERY_COMPILE dans SQL Server 2014