Partager via


sys.dm_exec_query_memory_grants

Nouveau : 14 avril 2006

Retourne des informations concernant les requêtes qui ont acquis une allocation de mémoire ou qui requièrent encore une allocation de mémoire pour s'exécuter. Les requêtes qui n'ont pas besoin d'attendre une allocation de mémoire n'apparaissent pas dans cette vue.

Nom de la colonne Type de données Description

session_id

smallint

ID (SPID) de la session sur laquelle cette requête s'exécute.

request_id

int

ID de la demande. Unique dans le contexte de la session.

scheduler_id

int

ID du planificateur qui planifie cette requête.

dop

smallint

Degré de parallélisme de cette requête.

request_time

datetime

Date et heure auxquelles cette requête a demandé l'allocation de mémoire.

grant_time

datetime

Date et heure auxquelles la mémoire a été allouée à cette requête. NULL si la mémoire n'a pas encore été allouée.

requested_memory_kb

bigint

Quantité totale de mémoire demandée, en kilo-octets.

granted_memory_kb

bigint

Quantité totale de mémoire réellement allouée, en kilo-octets. Peut être NULL si la mémoire n'a pas encore été allouée. Dans une situation normale, cette valeur doit être identique à requested_memory_kb. Pour la création d'index, le serveur peut autoriser l'allocation de mémoire à la demande supplémentaire au-delà de la mémoire allouée initialement.

required_memory_kb

bigint

Mémoire minimale requise pour exécuter cette requête, en kilo-octets. requested_memory_kb est supérieur ou égal à cette quantité.

used_memory_kb

bigint

Mémoire physique utilisée à ce moment précis, en kilo-octets.

max_used_memory_kb

bigint

Mémoire physique maximale utilisée jusqu'à ce moment, en kilo-octets.

query_cost

float

Coût estimé de la requête.

timeout_sec

int

Délai d'attente (en secondes) avant que cette requête abandonne la demande d'allocation de mémoire.

resource_semaphore_id

smallint

ID du sémaphore de ressource sur lequel cette requête attend.

queue_id

smallint

ID de la file d'attente où cette requête attend les allocations de mémoire. NULL si la mémoire a déjà été allouée.

wait_order

int

Ordre séquentiel des requêtes en attente dans le queue_id spécifié. Cette valeur peut changer pour une requête donnée si d'autres requêtes obtiennent des allocations de mémoire ou dépassent leur délai d'attente. NULL si la mémoire a déjà été allouée.

is_next_candidate

bit

Candidat à la prochaine allocation de mémoire.

1 = Oui

0 = Non

NULL = la mémoire a déjà été allouée.

wait_time_ms

bigint

Temps d'attente en millisecondes. NULL si la mémoire a déjà été allouée.

plan_handle

varbinary(64)

Identificateur de ce plan de requête. Utilisez sys.dm_exec_query_plan pour extraire le plan XML réel.

sql_handle

varbinary(64)

Identificateur du texte Transact-SQL pour cette requête. Utilisez sys.dm_exec_sql_text pour obtenir le texte Transact-SQL réel.

Autorisations

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

Notes

Voici un exemple de scénario de débogage typique pour le délai d'attente de requête :

  • Vérification de l'état global de la mémoire système à l'aide de sys.dm_os_memory_clerks, sys.dm_os_sys_info et de divers autres compteurs de performances.
  • Vérification des réservations de mémoire d'exécution de requête dans sys.dm_os_memory_clerkstype = 'MEMORYCLERK_SQLQERESERVATIONS'.
  • Vérification des requêtes en attente d'allocation à l'aide de sys.dm_exec_query_memory_grants.
  • Examen approfondi des requêtes utilisant beaucoup de mémoire à l'aide de sys.dm_exec_requests.
  • Si vous soupçonnez une perte de contrôle de requête, examinez le Showplan à partir de sys.dm_exec_query_plan et le texte du lot à partir de sys.dm_exec_sql_text.

Les requêtes qui utilisent des vues de gestion dynamiques incluant 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. sys.dm_exec_query_memory_grants est une nouveauté dans SQL Server 2005 Service Pack 1. Les informations dans sys.dm_exec_query_memory_grants sont spécifiques à l'implémentation interne de SQL Server 2005 et devraient être modifiées dans la prochaine version de SQL Server. Utilisez sys.dm_exec_query_memory_grants pour le dépannage, mais ne l'incluez pas dans des applications qui utiliseront des versions ultérieures de SQL Server.

Voir aussi

Référence

sys.dm_exec_query_resource_semaphores
Fonctions et vues de gestion dynamique liées à l'exécution

Aide et Informations

Assistance sur SQL Server 2005