Udostępnij za pośrednictwem


DBCC FREEPROCCACHE (Transact-SQL)

Usuwa wszystkie elementy z pamięci podręcznej planu, usuwa określonego planu z pamięci podręcznej plan określając uchwyt planu lub SQL lub usuwa wszystkie wpisy pamięci podręcznej skojarzonego z puli określonego zasób .

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]

Argumenty

Uwagi

Ostrożnie wyczyścić pamięć podręczną plan za pomocą DBCC FREEPROCCACHE.Powoduje zwolnienie pamięci podręcznej plan, na przykład procedura składowana ponowne kompilacje zamiast ponownie z pamięci podręcznej.Może to spowodować nagłe, tymczasowe spadek wydajności kwerendy.Dla każdego cachestore wyczyszczone w pamięci podręcznej planu SQL Server dziennik błędów będzie zawierać następujący komunikat informacyjny: "SQL ServerNapotkano %d zamieniono opróżniania dla '% s' cachestore cachestore (część planu w pamięci podręcznej) ze względu na "dbcc freeproccache" lub "dbcc freesystemcache" operacji." Ten komunikat jest rejestrowany co pięć minut, tak długo, jak jest opróżniany z pamięci podręcznej w tym przedziale czas .

Zestawy wyników

Gdy NO_INFOMSGS Z klauzula nie jest określony, zwraca DBCC FREEPROCCACHE:

"DBCC Zakończono wykonanie.Jeśli DBCC drukowane komunikaty o błędach, skontaktuj się z administrator systemu."

Uprawnienia

Wymaga uprawnienia do zmiany stanu serwera na serwerze.

Przykłady

A.Czyszczenie planu kwerend z pamięci podręcznej plan

W następującym przykładzie usunięto planu kwerend z pamięci podręcznej planu, określając uchwyt planu kwerend.W celu zapewnienia, że przykładowa kwerenda znajduje się w pamięci podręcznej plan, najpierw jest wykonywany kwerendy.sys.dm_exec_cached_plans i sys.dm_exec_sql_text Widoki dynamiczne zarządzanie są proszeni o zwraca uchwyt plan dla kwerendy.Wartość dojścia planu z zestaw wyników zostanie wstawiony na DBCC FREEPROCACHE instrukcja usunąć tylko planu z pamięci podręcznej planu.

USE AdventureWorks2008R2;
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

Oto zestaw wyników.

plan_handle                                         text

--------------------------------------------------  -----------------------------

0x060006001ECA270EC0215D05000000000000000000000000  SELECT * FROM Person.Address;

(1 row(s) affected)

-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO

B.Wyczyszczenie wszystkich planów z pamięci podręcznej plan

W następującym przykładzie usunięto wszystkie elementy z pamięci podręcznej planu.Z NO_INFOMSGS klauzula określono zapobiec wyświetlaniu komunikatu informacji.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

C.Wyczyszczenie wszystkich wpisów pamięci podręcznej skojarzony z pulą zasób

W następującym przykładzie usunięto wszystkie wpisy pamięci podręcznej skojarzonego z puli określonego zasób .sys.dm_resource_governor_resource_pools Widok jest poszukiwana najpierw do uzyskania wartości dla pool_name.

SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE ('default');
GO