据我所知,如果我执行'DBCC FREEPROCCACHE'和'DBCC DROPCLEANBUFFERS',整个服务器的缓冲区将被清除。 我想知道是否只有清理指定数据库的缓冲区。因此,对其他数据库的查询不会受到影响。
答案 0 :(得分:3)
您可以使用DBCC FLUSHPROCINDB(<db_id>)
从单个数据库中清除所有执行计划。我不知道有任何类似的命令来清除缓冲区缓存中的特定页面。
但是,如果情况允许,可以暂时将数据库设置为脱机,然后重新联机以清除数据库的计划和缓冲区缓存。
答案 1 :(得分:1)
FREEPROCCACHE
或DBCC FREEPROCCACHE
根据msdn https://msdn.microsoft.com/en-us/library/cc293622.aspx
DBCC FREEPROCCACHE此命令从内存中删除所有缓存的计划 DBCC FLUSHPROCINDB(
<dbid>
)此命令允许您指定a 特定的数据库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);