Quais caches o FREESYSTEMCACHE limpa que o FREEPROCCACHE não faz?
Existem muitos caches de sistema disponíveis no SQL Server. Estou me referindo ao SQL 2008R2 (como eu testei nele).
A consulta abaixo retornará todos os caches disponíveis:
--- 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
então, por exemplo, você deseja limpar todos os caches que você executará
DBCC FREESYSTEMCACHE ('ALL')
para que caches específicos sejam limpos, você pode executar
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)
Usando o FREEPROCCACHE, você não poderá limpar tudo o que foi mencionado acima nesse nível detalhado.
FREEPROCCACHE ==> de BOL
Remove todos os elementos do cache do plano, remove um plano específico do cache do plano, especificando um identificador de plano ou identificador SQL ou remove todas as entradas de cache associadas a um pool de recursos especificado.
Portanto, basicamente, você pode pensar nele relacionado apenas ao cache do plano, com a capacidade de remover planos específicos do cache com o identificador do plano e / ou o nome do pool.
Fun With DBCC FREEPROCCACHE é um blog de Glenn Berry