Quels caches FREESYSTEMCACHE efface-t-il que FREEPROCCACHE ne fait pas?
Il existe de nombreux caches système disponibles dans SQL Server. Je fais référence à SQL 2008R2 (comme je l'ai testé dessus).
La requête ci-dessous renverra tous les caches disponibles:
--- ONLY for Educational purpose. Don't attempt to run on PROD !!
select 'DBCC freesystemcache ('+''''+name+''''+')' from sys.dm_os_memory_clerks group by name
-- 155 rows
par exemple, vous voulez effacer tous les caches que vous exécuterez
DBCC FREESYSTEMCACHE ('ALL')
pour que les caches spécifiques soient effacés, vous pouvez exécuter
DBCC FREESYSTEMCACHE ('userdatabase') -- cleans cache for specific user database
DBCC FREESYSTEMCACHE ('tempdb') -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
.. and many more (see above 155 rows returned from sql server 2008R2)
En utilisant FREEPROCCACHE, vous ne pourrez pas effacer tout ce qui précède à ce niveau détaillé.
FREEPROCCACHE ==> de BOL
Supprime tous les éléments du cache de plan, supprime un plan spécifique du cache de plan en spécifiant un descripteur de plan ou un descripteur SQL, ou supprime toutes les entrées de cache associées à un pool de ressources spécifié.
Donc, essentiellement, vous pouvez le considérer comme uniquement lié au cache Plan avec la possibilité de supprimer des plans spécifiques du cache avec le descripteur de plan et / ou le nom du pool.
Fun With DBCC FREEPROCCACHE est un blog de Glenn Berry