DBCC FREESYSTEMCACHE (Transact-SQL)
适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例
从所有缓存中释放所有未使用的缓存条目。 SQL Server 数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。 但是,可以使用此命令从每个缓存中或者从指定的 Resource Governor 池缓存中手动删除未使用的条目。
语法
DBCC FREESYSTEMCACHE
( 'ALL' [ , pool_name ] )
[ WITH
{ [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ] }
]
注意
若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
( 'ALL' [ , pool_name ] )
ALL
指定所有受支持的缓存。
pool_name
指定资源调控器池缓存。 只释放与此池关联的条目。 若要列出可用池名称,请运行:
SELECT name FROM sys.dm_resource_governor_resource_pools;
可使用此命令单独释放大多数(但非全部)缓存。
MARK_IN_USE_FOR_REMOVAL
当不再使用当前使用的条目后,将它们分别从其各自所属的缓存中进行异步释放。 在 DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL
运行后,缓存中新建的条目不受影响。
NO_INFOMSGS
取消显示所有信息性消息。
备注
运行 DBCC FREESYSTEMCACHE
可清除 SQL Server 实例的计划缓存。 清除计划缓存将导致对所有即将到来的执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。 对于计划缓存中每个已清除的缓存存储区,SQL Server 错误日志包含以下信息性消息:
SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
每隔五分钟,只要缓存在这段时间间隔内得到刷新,此消息就记录一次。
结果集
DBCC FREESYSTEMCACHE
返回:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
权限
需要对服务器的 ALTER SERVER STATE 权限。
示例
A. 从资源调控器池缓存释放未使用的缓存条目
下面的示例说明如何清除专属于某个指定资源调控器资源池的缓存。
-- Clean all the caches with entries specific to the
-- resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL', [default]);
B. 当不再使用条目后,将它们分别从其各自所属的缓存中释放
下面的示例使用 MARK_IN_USE_FOR_REMOVAL 子句,在不再使用条目后将它们从所有当前缓存中释放。
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;