Answers:
FREESYSTEMCACHE不会擦除FREEPROCCACHE不会删除哪些缓存?
SQL Server中有许多可用的系统缓存。我指的是SQL 2008R2(正如我对其进行的测试)。
下面的查询将返回所有可用的缓存:
--- 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
因此,例如,您想清除所有缓存,将运行
DBCC FREESYSTEMCACHE ('ALL')
为了清除特定的缓存,您可以运行
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)
使用FREEPROCCACHE,您将无法在该详细级别清除所有上述内容。
来自BOL的 FREEPROCCACHE ==>
从计划缓存中删除所有元素,通过指定计划句柄或SQL句柄从计划缓存中删除特定计划,或删除与指定资源池关联的所有缓存条目。
因此,从本质上讲,您可能会认为它仅与计划缓存有关,能够从具有计划句柄和/或池名称的缓存中删除特定计划。
DBCC的乐趣FREEPROCCACHE是Glenn Berry的博客