Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Base de données SQL dans Microsoft Fabric
Retourne une ligne pour chaque plan de requête mis en cache par SQL Server pour accélérer l’exécution des requêtes. 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 Azure SQL Database, les vues de gestion dynamique ne peuvent pas exposer d’informations qui auraient un impact sur l’isolement de la base de données ou exposeraient des informations sur d’autres bases de données auxquelles l’utilisateur a accès. Pour éviter d’exposer ces informations, chaque ligne qui contient des données qui n’appartiennent pas au locataire connecté est filtrée. En outre, les valeurs des colonnes memory_object_address et pool_id sont filtrées ; la valeur de colonne est définie sur NULL.
Remarque
Pour appeler cela à partir d’Azure Synapse Analytics ou du système de plateforme Analytics (PDW), utilisez le nom sys.dm_pdw_nodes_exec_cached_plans. Cette syntaxe n’est pas prise en charge par le pool SQL serverless dans Azure Synapse Analytics.
| Nom de la 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 plans SQL et les plans d’objets caches, la taille de la table de hachage peut atteindre 10 007 systèmes 32 bits et jusqu’à 40 009 sur les systèmes 64 bits. Pour le cache Bound Trees, la taille de la table de hachage peut atteindre 1 009 sur les systèmes 32 bits et jusqu’à 4 001 sur les 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. |
refcounts |
int | Nombre d'objets du cache faisant référence à cet objet.
refcounts doit être au moins 1 pour qu’une entrée soit dans le cache. |
usecounts |
int | Nombre 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_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 être utilisée avec sys.dm_os_memory_objects pour obtenir la répartition de la mémoire du plan mis en cache et avec sys.dm_os_memory_cache_entries_entries pour obtenir le coût de mise en cache de l’entrée. |
cacheobjtype |
nvarchar(34) | Type d'objet dans le cache. La valeur peut être l’une des 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) |
objtype |
nvarchar(16) | Type d'objet. Vous trouverez ci-dessous les valeurs possibles et leurs descriptions correspondantes. Proc : Procédure stockée Préparé : instruction Préparée Ad hoc : requête ad hoc. Fait référence à Transact-SQL envoyé en tant qu’événements de langage à l’aide d’osql ou sqlcmd au lieu d’appels de procédure distante. ReplProc : Replication-filter-procedure Trigger : déclencheur Affichage : Affichage Valeur par défaut : valeur par défaut UsrTab : Table utilisateur SysTab : Table système Vérifier : contrainte CHECK Règle : Règle |
plan_handle |
varbinary(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_id |
int | ID du pool de ressources par rapport auquel cette utilisation de la mémoire de plan est prise en compte. |
pdw_node_id |
int | Identificateur du nœud sur lequel cette distribution est activée. S’applique à : Azure Synapse Analytics, Analytics Platform System (PDW) |
autorisations
SQL Server 2019 (15.x) et les versions antérieures nécessitent VIEW SERVER STATE une autorisation.
SQL Server 2022 (16.x) et versions ultérieures, et Azure SQL Managed Instance, nécessitent VIEW SERVER PERFORMANCE STATE une autorisation.
Sur les objectifs de service Azure SQL Database Basic, S0 Sur tous les autres objectifs de service SQL Database, l’autorisation VIEW DATABASE STATE sur la base de données ou l’appartenance au rôle serveur ##MS_ServerStateReader## est requise.
Exemples
R. Retourner le texte de lot des entrées mises en cache 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;
B. Retourner des plans de requête pour tous les déclencheurs mis 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';
C. Retourner les options SET avec lesquelles le plan a été compilé
L’exemple suivant retourne les SET options avec lesquelles le plan a été compilé. Le sql_handle plan est également retourné. L’opérateur PIVOT est utilisé pour générer les attributs et sql_handle les set_options colonnes plutôt que comme lignes. Pour plus d’informations sur la valeur retournée, set_optionsconsultez 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;
D. Retourner la répartition de la mémoire de tous les plans compilés mis 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,
type,
page_size_in_bytes
FROM sys.dm_exec_cached_plans AS ecp
INNER 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';
Contenu connexe
- Vues de gestion dynamique système
- Fonctions et vues de gestion dynamique relatives à l'exécution (Transact-SQL)
- sys.dm_exec_query_plan (Transact-SQL)
- sys.dm_exec_plan_attributes (Transact-SQL)
- sys.dm_exec_sql_text (Transact-SQL)
- sys.dm_os_memory_objects (Transact-SQL)
- sys.dm_os_memory_cache_entries (Transact-SQL)
- Clause FROM plus JOIN, APPLY, PIVOT (Transact-SQL)