DBCC FREEPROCCACHE (Transact-SQL)
從計畫快取移除所有元素;指定計畫控制代碼或 SQL 控制代碼,從計畫快取移除特定的計畫;或是移除與指定的資源集區相關聯的所有快取項目。
語法
DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]
引數
( { plan_handle | sql_handle | pool_name } )
plan_handle 用來唯一識別批次的查詢計畫,該批次已經執行且其計畫在計畫快取中。plan_handle 是 varbinary(64),而且可以從下列動態管理物件取得:sql_handle 是要清除之批次的 SQL 控制代碼。sql_handle 是 varbinary(64),而且可從下列動態管理物件取得:
pool_name 是「資源管理員」資源集區的名稱。pool_name 是 sysname,而且可以藉由查詢 sys.dm_resource_governor_resource_pools 動態管理檢視取得。
若要將資源管理員工作負載群組與資源集區產生關聯,請查詢 sys.dm_resource_governor_workload_groups 動態管理檢視。如需有關工作階段之工作負載群組的詳細資訊,請查詢 sys.dm_exec_sessions 動態管理檢視。
WITH NO_INFOMSGS
抑制所有參考訊息。
備註
請利用 DBCC FREEPROCCACHE 小心清除計畫快取。釋出計畫快取會導致例如重新編譯預存程序,而不是從快取中重複使用這個預存程序。這可能會導致查詢效能突然暫時下降。針對每次清除計畫快取的快取存放區,SQL Server 錯誤記錄檔會包含下列參考訊息:「由於 'DBCC FREEPROCCACHE' 或 'DBCC FREESYSTEMCACHE' 作業,SQL Server 的 '%s' 快取存放區 (計畫快取的一部分) 發生 %d 次快取存放區排清。」只要快取發生排清,這個訊息就會每五分鐘記錄一次。
結果集
未指定 WITH NO_INFOMSGS 子句時,DBCC FREEPROCCACHE 會傳回:
「DBCC 的執行已經完成。如果 DBCC 印出錯誤訊息,請連絡您的系統管理員」。
權限
需要伺服器的 ALTER SERVER STATE 權限。
範例
A. 從計畫快取清除查詢計畫
下列範例會從計畫快取中指定查詢計畫控制代碼,藉以清除查詢計畫。為確保範例查詢位於計畫快取中,會先執行查詢。系統會查詢 sys.dm_exec_cached_plans 和 sys.dm_exec_sql_text 動態管理檢視以傳回查詢的計畫控制代碼。然後會將結果集中的計畫控制代碼值插入到 DBCC FREEPROCACHE 陳述式中,就可以從計畫快取中僅移除該計畫。
USE AdventureWorks;
GO
SELECT * FROM Person.Address;
GO
SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'SELECT * FROM Person.Address%';
GO
以下為結果集:
plan_handle text
-------------------------------------------------- -----------------------------
0x060006001ECA270EC0215D05000000000000000000000000 SELECT * FROM Person.Address;
(1 個資料列受到影響)
-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO
B. 從計畫快取清除所有計畫
下列範例會從計畫快取中清除所有元素。如果指定 WITH NO_INFOMSGS 子句,可防止資訊訊息顯示出來。
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
C. 清除與資源集區有關聯的所有快取項目
下列範例會清除與指定之資源集區有關聯的所有快取項目。先查詢 sys.dm_resource_governor_resource_pools 檢視表,以取得 pool_name 的值。
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE (default);
GO
變更記錄
更新的內容 |
---|
已更正簡介中的資源集區資訊,並在「引數」一節中新增有關取得資源管理員集區名稱資訊之方式的資訊。 |
已新增範例 C。 |