我可以清理某些指定数据库的缓冲区而不是整个 sql server

发布于 2024-10-30 20:40:31 字数 118 浏览 5 评论 0 原文

据我所知,如果我执行“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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆蝶 2024-11-06 20:40:31

您可以使用 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.

断桥再见 2024-11-06 20:40:31

FREEPROCCACHEDBCC FREEPROCCACHE 不可能

根据 msdn https://msdn.microsoft.com/en-us/library/cc293622.aspx

DBCC FREEPROCCACHE 此命令从内存中删除所有缓存的计划
DBCC FLUSHPROCINDB () 此命令允许您指定
特定数据库 ID,然后清除该特定数据库中的所有计划
数据库。

可以通过这种方式获取数据库ID

DECLARE @intDBID INT;
SET @intDBID = (SELECT [dbid] 
                FROM master.dbo.sysdatabases 
                WHERE name = 'AdventureWorks');

-- Flush the procedure cache for one database only
DBCC FLUSHPROCINDB (@intDBID);

Not a possibility with FREEPROCCACHE or DBCC FREEPROCCACHE

As per msdn https://msdn.microsoft.com/en-us/library/cc293622.aspx

DBCC FREEPROCCACHE This command removes all cached plans from memory
DBCC FLUSHPROCINDB (<dbid>) This command allows you to specify a
particular database id, and then clears all plans from that particular
database.

db id can be fetched this way

DECLARE @intDBID INT;
SET @intDBID = (SELECT [dbid] 
                FROM master.dbo.sysdatabases 
                WHERE name = 'AdventureWorks');

-- Flush the procedure cache for one database only
DBCC FLUSHPROCINDB (@intDBID);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文