7

据我所知,如果我执行“DBCC FREEPROCCACHE”和“DBCC DROPCLEANBUFFERS”,整个服务器的缓冲区将被清理。我想知道是否有办法只清理指定数据库的缓冲区。因此,对其他数据库的查询不会受到影响。

4

2 回答 2

4

您可以使用 清除单个数据库中的所有执行计划DBCC FLUSHPROCINDB(<db_id>)。我不知道有任何类似的命令可以从缓冲区缓存中清除特定页面。

但是,如果情况允许,您可以暂时将数据库设置为脱机,然后再重新联机以清除数据库的计划缓存和缓冲区缓存。

于 2011-04-06T10:50:08.943 回答
1

不可能有FREEPROCCACHEorDBCC FREEPROCCACHE

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

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

db 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);
于 2017-09-06T07:54:35.057 回答