sys.dm_exec_cached_plans

Mis à jour : 12 décembre 2006

Retourne une ligne pour chaque plan de requête qui est mis en cache par SQL Server pour une exécution plus rapide. Vous pouvez faire appel à cette vue de gestion dynamique pour rechercher des plans de requête en cache, du texte de requête en cache, la quantité de mémoire occupée par les plans en cache et le nombre de réutilisations de ces plans.

ms187404.note(fr-fr,SQL.90).gifRemarque :
Pour les plans de requête, la vue de gestion dynamique sys.dm_exec_cached_plans mappe à la table système syscacheobjects dans SQL Server 2000.

Nom de colonne

Type de données

Description

bucketid

int

ID du compartiment de hachage dans lequel l'entrée est en cache. La valeur indique une plage comprise entre 0 et la taille de la table de hachage pour le type du cache.

Pour les caches Object Plans et SQL Plans, la taille de la table de hachage peut faire jusqu'à 10 007 sur des systèmes 32 bits et 40 009 sur des systèmes 64 bits. Pour le cache Arborescences liées, la taille de la table de hachage peut faire jusqu'à 1 009 sur des systèmes 32 bits et 4 001 sur des systèmes 64 bits. Pour le cache Procédures stockées étendues, la taille de la table de hachage peut faire jusqu'à 127 sur des systèmes 32 bits et 64 bits. Pour plus d'informations sur les types de caches et les tables de hachage, consultez sys.dm_os_memory_cache_hash_tables.

refcounts

int

Nombre d'objets du cache faisant référence à cet objet. Refcounts doit avoir au moins la valeur 1 pour qu'une entrée soit dans le cache.

usecounts

int

Nombre d'utilisations de l'objet du cache depuis le début.

size_in_bytes

int

Nombre d'octets mobilisés par l'objet dans le cache.

memory_object_address

varbinary(8)

Adresse mémoire de l'entrée en cache. Cette valeur peut s'utiliser avec sys.dm_os_memory_objects pour obtenir la répartition mémoire du plan en cache et avec les entrées sys.dm_os_memory_cache_entries pour obtenir le coût de la mise en cache de l'entrée.

cacheobjtype

nvarchar(34)

Type de l’objet dans le cache. Il peut s'agir de l'une des valeurs suivantes :

  • Compiled Plan (plan compilé)
  • Parse Tree (arborescence d'analyse)
  • Extended Proc (procédure étendue)
  • CLR Compiled Func (fonction compilée CLR)
  • CLR Compiled Proc (procédure compilée CLR)

objtype

nvarchar(16)

Type d'objet. Il peut s'agir de l'une des valeurs suivantes :

Valeur

Description

ProcProcédure stockée

PreparedPrepared statement (instruction préparée)

AdhocRequête appropriée 1

ReplProcProcédure de filtre de réplication

DéclencheurDéclencheur

VueVue

Valeur par défautPar défaut

UsrTabTable utilisateur

SysTabTable système

VérifierContrainte CHECK

RègleRègle

plan_handle

varbinary(64)

Identificateur du plan en mémoire. Cet identificateur est transitoire et il reste constant uniquement pendant que le plan est dans le cache. Cette valeur peut être utilisée avec les fonctions de gestion dynamique suivantes :

sys.dm_exec_sql_text

sys.dm_exec_query_plan

sys.dm_exec_plan_attributes

1  Fait référence à Transact-SQL envoyé sous la forme d'événements de langage à l'aide de osql ou sqlcmd à la place d'appels de procédure distante.

Autorisations

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

Exemples

A. Retour du texte du lot des entrées mises en cache qui sont réutilisées

L'exemple suivant retourne le texte SQL de toutes les entrées en cache ayant été utilisées plusieurs fois.

SELECT usecounts, cacheobjtype, objtype, text 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
WHERE usecounts > 1 
ORDER BY usecounts DESC;
GO

B. Retour des plans de requête pour tous les déclencheurs en cache

L'exemple suivant retourne les plans de requête de tous les déclencheurs en cache.

SELECT plan_handle, query_plan, objtype 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
WHERE objtype ='Trigger';
GO

C. Retour des options SET ayant servi à compiler le plan

L'exemple suivant retourne les options SET ayant servi à compiler le plan. sql_handle est également retourné pour le plan. L'opérateur PIVOT sert à générer les attributs set_options et sql_handle sous la forme de colonnes plutôt que de lignes. Pour plus d'informations sur la valeur retournée dans set_options, consultez sys.dm_exec_plan_attributes.

SELECT plan_handle, pvt.set_options, pvt.sql_handle
FROM (
      SELECT plan_handle, epa.attribute, epa.value 
      FROM sys.dm_exec_cached_plans 
      OUTER APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
      WHERE cacheobjtype = 'Compiled Plan'
      ) AS ecpa 
PIVOT (MAX(ecpa.value) FOR ecpa.attribute IN ("set_options", "sql_handle")) AS pvt;
GO

D. Retour de la répartition mémoire de tous les plans compilés en cache

L'exemple suivant retourne une répartition de la mémoire utilisée par tous les plans compilés du cache.

SELECT plan_handle, ecp.memory_object_address AS CompiledPlan_MemoryObject, 
    omo.memory_object_address, pages_allocated_count, type, page_size_in_bytes 
FROM sys.dm_exec_cached_plans AS ecp 
JOIN sys.dm_os_memory_objects AS omo 
    ON ecp.memory_object_address = omo.memory_object_address 
    OR ecp.memory_object_address = omo.parent_address
WHERE cacheobjtype = 'Compiled Plan';
GO

Voir aussi

Référence

Fonctions et vues de gestion dynamique
Fonctions et vues de gestion dynamique liées à l'exécution
sys.dm_exec_query_plan
sys.dm_exec_plan_attributes
sys.dm_exec_sql_text
sys.dm_os_memory_objects
sys.dm_os_memory_cache_entries

Autres ressources

Utilisation de APPLY

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

12 décembre 2006

Contenu modifié :
  • Ajout de la section Exemples.
  • Modification des définitions des colonnes bucketid, refcounts, memory_object_address, objtype et cacheobjtype.

5 décembre 2005

Contenu modifié :
  • Le nom de colonne Pagesused a été changé en size_in_bytes.
  • La colonne memory_object_address a été déplacée afin d'apparaître après la colonne size_in_bytes.