Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

sys.dm_exec_query_memory_grants (Transact-SQL)

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.

Dans Base de données SQL Windows Azure, les vues de gestion dynamique ne peuvent pas exposer des informations qui ont un impact sur la relation contenant-contenu de la base de données, ou exposer des informations concernant d'autres bases de données auxquelles l'utilisateur a accès. Pour éviter d'exposer ces informations, chaque ligne contenant des données qui n'appartient pas au locataire connecté est filtrée. En outre, les valeurs des colonnes scheduler_id, wait_order, pool_id, group_id sont filtrées ; la valeur de colonne est NULL.

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle, Base de données SQL Windows Azure (version initiale jusqu'à la version actuelle).

Nom de la colonne

Type de données

Description

session_id

smallint

ID (SPID) de la session dans laquelle cette requête est en cours d'exécution.

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 pour 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 actuellement allouée, en kilo-octets. Peut être NULL si la mémoire n'a pas encore été allouée. Dans une situation type, cette valeur doit être la même que requested_memory_kb. Pour la création d'index, le serveur peut autoriser de la 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 identique ou supérieure à cette quantité.

used_memory_kb

bigint

Mémoire physique utilisée à ce moment, 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'expiration, en secondes, avant que cette requête abandonne la demande d'allocation de la mémoire.

resource_semaphore_id

smallint

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

Remarque Remarque

Cet ID est unique dans les versions de SQL Server antérieures à SQL Server 2008. Cette modification peut affecter l'exécution de la requête de résolution des problèmes. Pour plus d'informations, consultez la section « Notes », plus loin dans cette rubrique.

queue_id

smallint

ID de la file d'attente dans laquelle cette requête attend l'allocation de mémoire. NULL si la mémoire est déjà 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 bénéficient d'une allocation mémoire ou d'un délai d'attente. NULL si la mémoire est déjà allouée.

is_next_candidate

bit

Candidat pour l'allocation mémoire suivante.

1 = Oui

0 = Non

NULL = La mémoire est déjà allouée.

wait_time_ms

bigint

Temps d'attente en millisecondes. NULL si la mémoire est déjà 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 de texte Transact-SQL pour cette requête. Utilisez sys.dm_exec_sql_text pour obtenir le texte Transact-SQL réel.

group_id

int

ID du groupe de charge de travail dans lequel cette requête est exécutée.

pool_id

int

ID du pool de ressources auquel appartient ce groupe de charge de travail.

is_small

tinyint

Si la valeur est définie sur 1, cette allocation utilise le sémaphore de ressource le plus petit. Si la valeur est définie sur 0, c'est que le sémaphore de ressource ordinaire est utilisé.

ideal_memory_kb

bigint

Taille de l'allocation mémoire, en kilo-octets (Ko) pour l'ajuster à la mémoire physique. Elle est basée sur l'estimation de la cardinalité.

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

Un scénario de débogage type pour le délai d'attente de la requête peut ressembler à ce qui suit :

  • Recherchez l'état général de la mémoire système à l'aide de sys.dm_os_memory_clerks, sys.dm_os_sys_info et de différents compteurs de performance.

  • Recherchez les réservations de mémoire d'exécution de la requête dans sys.dm_os_memory_clerkstype = 'MEMORYCLERK_SQLQERESERVATIONS'.

  • Recherchez les requêtes en attente d'allocations à l'aide de sys.dm_exec_query_memory_grants.

  • Examinez attentivement les requêtes nécessitant beaucoup de mémoire à l'aide de sys.dm_exec_requests.

  • Si vous suspectez une perte de contrôle de requête, examinez le plan d'exécution de requêtes à 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 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.

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). Depuis SQL Server 2008, chaque pool se comporte comme une petite instance de serveur indépendante et requiert 2 sémaphores. Le nombre de lignes retournées de sys.dm_exec_query_resource_semaphores peut être jusqu'à 20 fois supérieur au nombre de lignes retournées dans SQL Server 2005.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft