DBCC FREESYSTEMCACHE (Transact-SQL)
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體
釋出所有快取中所有未使用的快取項目。 SQL Server 資料庫引擎會主動在背景清除未使用的快取項目,讓記憶體存放目前的項目。 不過,您可以使用這個命令,以手動方式從每個快取或是所指定 Resource Governor 集區快取中移除未使用的項目。
Syntax
DBCC FREESYSTEMCACHE
( 'ALL' [ , pool_name ] )
[ WITH
{ [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ] }
]
注意
若要檢視 SQL Server 2014 與更早版本的 Transact-SQL 語法,請參閱舊版文件。
引數
( 'ALL' [ , pool_name ] )
ALL
指定所有支援的快取。
pool_name
指定資源管理員集區快取。 僅會釋放與此集區相關的項目。 若要列出可用的集區名稱,請執行:
SELECT name FROM sys.dm_resource_governor_resource_pools;
大部分 (但非全部) 的快取都可以使用此命令來個別釋放。
MARK_IN_USE_FOR_REMOVAL
不再使用目前所用的項目之後,分別從其對應的快取中,以非同步的方式釋出這些項目。 在 DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL
執行之後,在快取中建立的新項目不會受到影響。
NO_INFOMSGS
隱藏所有參考訊息。
備註
執行 DBCC FREESYSTEMCACHE
會清除 SQL Server 執行個體的計畫快取。 清除計畫快取會導致重新編譯所有未來執行計畫,且可能會導致查詢效能突然暫時降低。 針對計畫快取中每個已清除的快取存放區,SQL Server 錯誤記錄檔會包含下列參考訊息:
SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to 'DBCC FREEPROCCACHE' or 'DBCC FREESYSTEMCACHE' operations.
只要在該時間間隔內快取發生排清,這個訊息就會每五分鐘記錄一次。
結果集
DBCC FREESYSTEMCACHE
會傳回:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
權限
需要伺服器的 ALTER SERVER STATE 權限。
範例
A. 從資源管理員集區快取中釋出未使用的快取項目
下列範例將說明如何清除指定之資源管理員資源集區所專用的快取。
-- Clean all the caches with entries specific to the
-- resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL', [default]);
B. 等項目不用之後,從其各自快取中釋出這些項目
下列範例會使用 MARK_IN_USE_FOR_REMOVAL 子句,當項目不再使用之後,就從目前所有的快取中釋放這些項目。
DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;