Hello,

En écrivant quelques requêtes pour auditer le cache, je suis tombé sur un problème où j'ai besoin de votre lumière.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT COUNT(*) AS [Nb_Total_Plans]
,SUM(c.size_in_bytes)/(1024*1024) AS [Total_Cache_Size_Mo]
FROM sys.dm_exec_cached_plans c 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) s
Résultat
-----------
Nb_Total_Plans ................ Total_Cache_Size_Mo
2255 ................................ 180

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT COUNT(*) AS [Nb_Total_Plans]
,SUM(c.size_in_bytes)/(1024*1024) AS [Total_Cache_Size_Mo]
FROM sys.dm_exec_cached_plans c
Résultat
-----------
Nb_Total_Plans ................ Total_Cache_Size_Mo
2262 ................................ 175
Le BOL dit ceci concernant le plan_handle :

Identificateur du plan en mémoire. Cet identificateur est transitoire et il reste constant uniquement pendant que le plan est dans le cache.
Comment expliquer cette différence ? Qu'est ce qui est plus logique pour afficher le nombre total de plans dans le cache de procédures et la taille de mémoire mobilisée ?

Détails des requêtes en préparation

Merci de m'éclairer