据我所知,如果我执行“DBCC FREEPROCCACHE”和“DBCC DROPCLEANBUFFERS”,整个服务器的缓冲区将被清理。我想知道是否有办法只清理指定数据库的缓冲区。因此,对其他数据库的查询不会受到影响。
问问题
3972 次
2 回答
4
您可以使用 清除单个数据库中的所有执行计划DBCC FLUSHPROCINDB(<db_id>)
。我不知道有任何类似的命令可以从缓冲区缓存中清除特定页面。
但是,如果情况允许,您可以暂时将数据库设置为脱机,然后再重新联机以清除数据库的计划缓存和缓冲区缓存。
于 2011-04-06T10:50:08.943 回答
1
不可能有FREEPROCCACHE
orDBCC 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 回答