Diferencia entre FreeProcCache y FreeSystemCache

12

Actualmente ejecuto DBCC FREEPROCCACHEcuando quiero borrar la información del grupo de búfer entre ejecutar consultas SQL. Sin embargo, estaba revisando esta referencia del artículo de Technet DBCC FREESYSTEMCACHE. ¿Qué cachés FREESYSTEMCACHElimpia eso FREEPROCCACHEno?

Sean Long
fuente

Respuestas:

25

¿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

Kin Shah
fuente