目前,DBCC FREEPROCCACHE当我想在运行 SQL 查询之间从缓冲池中清除信息时,我会运行。但是,我正在查看这篇Technet 文章,其中引用了DBCC FREESYSTEMCACHE. 哪些缓存会FREESYSTEMCACHE擦除而FREEPROCCACHE不会?
Kin*_*hah 27
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
Run Code Online (Sandbox Code Playgroud)
所以例如你想清除你将运行的所有缓存
DBCC FREESYSTEMCACHE ('ALL')
Run Code Online (Sandbox Code Playgroud)
对于要清除的特定缓存,您可以运行
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)
Run Code Online (Sandbox Code Playgroud)
使用 FREEPROCCACHE,您将无法在该详细级别清除上述所有内容。
FREEPROCCACHE ==> 来自BOL
从计划缓存中删除所有元素,通过指定计划句柄或 SQL 句柄从计划缓存中删除特定计划,或删除与指定资源池关联的所有缓存条目。
因此,本质上,您可能认为它仅与计划缓存相关,能够使用计划句柄和/或池名称从缓存中删除特定计划。
Fun with DBCC FREEPROCCACHE是 Glenn Berry 的博客
| 归档时间: |
|
| 查看次数: |
28301 次 |
| 最近记录: |