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_clerks où
type = '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