¿Qué cachés limpia FREESYSTEMCACHE que FREEPROCCACHE no?
Hay muchos cachés del sistema disponibles en SQL Server. Me refiero a SQL 2008R2 (como lo probé).
La consulta a continuación devolverá todos los cachés 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
así que, por ejemplo, si desea borrar todos los cachés, ejecutará
DBCC FREESYSTEMCACHE ('ALL')
para borrar cachés específicos, puede ejecutar
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)
Con FREEPROCCACHE, no podrá borrar todo lo mencionado anteriormente en ese nivel detallado.
FREEPROCCACHE ==> de BOL
Elimina todos los elementos de la caché del plan, elimina un plan específico de la caché del plan especificando un identificador de plan o un identificador de SQL, o elimina todas las entradas de caché asociadas con un grupo de recursos especificado.
Esencialmente, podría pensar que solo está relacionado con la caché del plan con la capacidad de eliminar planes específicos de la caché con el identificador del plan o el nombre del grupo.
Diversión con DBCC FREEPROCCACHE es un blog de Glenn Berry