我可以清理某些指定数据库的缓冲区而不是整个 sql server
据我所知,如果我执行“DBCC FREEPROCCACHE”和“DBCC DROPCLEANBUFFERS”,整个服务器的缓冲区将被清理。 我想知道是否有办法只清理指定数据库的缓冲区。因此,对其他数据库的查询不会受到影响。
from what i know, if i execute 'DBCC FREEPROCCACHE' and 'DBCC DROPCLEANBUFFERS', the buffer of entire server will be cleanup.
i wonder if there's anyway to cleanup buffer of specified database only. therefore, query for other databases will not be affected.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
DBCC FLUSHPROCINDB()
清除单个数据库中的所有执行计划。我不知道有任何类似的命令可以从缓冲区缓存中清除特定页面。但是,您可以暂时将数据库设置为脱机,然后重新联机,以清除数据库的计划缓存和缓冲区缓存(如果情况允许)。
You can clear all execution plans from a single database using
DBCC FLUSHPROCINDB(<db_id>)
. I'm not aware of any similar command to clear specific pages from the buffer cache.However, you can set the database offline momentarily and then back online to clear both plan and buffer caches for a database if the situation allows for this.
FREEPROCCACHE
或DBCC FREEPROCCACHE
不可能根据 msdn https://msdn.microsoft.com/en-us/library/cc293622.aspx
可以通过这种方式获取数据库ID
Not a possibility with
FREEPROCCACHE
orDBCC FREEPROCCACHE
As per msdn https://msdn.microsoft.com/en-us/library/cc293622.aspx
db id can be fetched this way