sys.dm_exec_cached_plans (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data WarehouseouiParallel Data Warehouse

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.

Dans Base de données Azure SQL, 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 dans les colonnes memory_object_address et pool_id sont filtrées ; la colonne a la valeur null.

System_CAPS_ICON_note.jpg Remarque


Appeler à partir de Azure SQL Data Warehouse ou Parallel Data Warehouse, utilisez le nom sys.dm_pdw_nodes_exec_cached_plans.

Nom de colonneType de donnéesDescription
bucketidintID 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 Plans d'objets et Plans SQL, la taille de la table de hachage peut atteindre 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.
refcountsintNombre d'objets du cache faisant référence à cet objet. RefCounts doit être au moins 1 pour une entrée dans le cache.
usecountsintNombre de fois que l'objet du cache a été trouvé. Non incrémenté lorsque les requêtes paramétrables recherchent un plan dans le cache. Peut être incrémenté plusieurs fois lors de l'utilisation du plan d'exécution de requêtes.
size_in_bytesintNombre d'octets mobilisés par l'objet dans le cache.
memory_object_addressvarbinary (8)Adresse mémoire de l'entrée en cache. Cette valeur peut être utilisée avec sys.dm_os_memory_objects pour obtenir la répartition mémoire du plan mis en cache et avec sys.dm_os_memory_cache_entriespour obtenir le coût de mise en cache de l’entrée.
cacheobjtypenvarchar(34)Type d'objet dans le cache. Il peut s'agir de l'une des valeurs suivantes :

Compiled Plan (plan compilé)

Compiled Plan Stub (stub du 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)
objtypenvarchar(16)Type d'objet. Vous trouverez ci-dessous les valeurs possibles et leurs descriptions correspondantes.

Traitement : Procédure stockée
Préparée : L’instruction préparée
Ad hoc : des requêtes Ad hoc. Fait référence à Transact-SQL soumis en tant qu’événements de langage à l’aide de osql ou sqlcmd plutôt que comme des appels de procédure distante.
ReplProc : Filtre de procédure de réplication
Déclencheur : déclencheur
Affichage : affichage
Par défaut : par défaut
UsrTab : Table d’utilisateur
SysTab : (Table système)
Vérification : Contrainte
Règle : règle
plan_handlevarbinary(64)Identificateur du plan en mémoire. Cet identificateur est temporaire et il reste constant uniquement tant 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
pool_idintID du pool de ressources par rapport auquel cette utilisation de la mémoire de plan est prise en compte.
« pdw_node_id »intS’applique à: Azure SQL Data Warehouse, Parallel Data Warehouse

L’identificateur pour le nœud de cette distribution.

1

Sur SQL Server nécessite l’autorisation VIEW SERVER STATE sur le serveur.

Sur Base de données SQL niveaux Premium requiert l’autorisation VIEW DATABASE STATE dans la base de données. Sur Base de données SQL base niveaux Standard et nécessitent le Base de données SQL compte d’administrateur.

A. Retour du texte du traitement 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 est utilisé pour la sortie du set_options et sql_handle attributs sous 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 &#40 ; Transact-SQL &#41 ;.

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  

Vues de gestion dynamique et fonctions &#40 ; Transact-SQL &#41 ;
Vues de gestion dynamique et fonctions &#40 ; liées à l’exécution Transact-SQL &#41 ;
Sys.dm_exec_query_plan &#40 ; Transact-SQL &#41 ;
Sys.dm_exec_plan_attributes &#40 ; Transact-SQL &#41 ;
Sys.dm_exec_sql_text &#40 ; Transact-SQL &#41 ;
Sys.dm_os_memory_objects &#40 ; Transact-SQL &#41 ;
Sys.dm_os_memory_cache_entries &#40 ; Transact-SQL &#41 ;
À PARTIR de &#40 ; Transact-SQL &#41 ;

Ajouts de la communauté

Afficher: