DBCC FREEPROCCACHE (Transact-SQL)
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Usuwa wszystkie elementy z pamięci podręcznej planu, usuwa określony plan z pamięci podręcznej planu, określając uchwyt planu lub dojście SQL lub usuwa wszystkie wpisy pamięci podręcznej skojarzone z określoną pulą zasobów.
Nuta
DBCC FREEPROCCACHE
nie usuwa statystyk wykonywania dla natywnie skompilowanych procedur składowanych. Pamięć podręczna procedury nie zawiera informacji o natywnie skompilowanych procedurach składowanych. Wszystkie statystyki wykonywania zebrane z wykonywania procedury będą wyświetlane w widokach DMV statystyk wykonywania: sys.dm_exec_procedure_stats (Transact-SQL) i sys.dm_exec_query_plan (Transact-SQL).
Transact-SQL konwencje składni
Składnia
Składnia dla programu SQL Server i usługi Azure SQL Database:
DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]
Składnia dla usługi Azure Synapse Analytics and Analytics Platform System (PDW):
DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ]
[ WITH NO_INFOMSGS ]
[;]
Argumenty
( { plan_handle | sql_handle | pool_name } )
plan_handle jednoznacznie identyfikuje plan zapytania dla partii, która została wykonana i której plan znajduje się w pamięci podręcznej planu. plan_handle jest varbinary(64) i można uzyskać z następujących dynamicznych obiektów zarządzania:
- sys.dm_exec_cached_plans
- sys.dm_exec_requests
- sys.dm_exec_query_memory_grants
- sys.dm_exec_query_stats
sql_handle to dojście SQL partii do wyczyszczenia. sql_handle jest varbinary(64) i można je uzyskać z następujących dynamicznych obiektów zarządzania:
- sys.dm_exec_query_stats
- sys.dm_exec_requests
- sys.dm_exec_cursors
- sys.dm_exec_xml_handles
- sys.dm_exec_query_memory_grants
pool_name jest nazwą puli zasobów zarządcy zasobów. pool_name jest nazwa_systemu i można je uzyskać, wykonując zapytanie dotyczące dynamicznego widoku zarządzania sys.dm_resource_governor_resource_pools.
Aby skojarzyć grupę obciążeń Zarządca zasobów z pulą zasobów, wykonaj zapytanie sys.dm_resource_governor_workload_groups dynamiczny widok zarządzania. Aby uzyskać informacje o grupie obciążeń dla sesji, wykonaj zapytanie sys.dm_exec_sessions dynamiczny widok zarządzania.
Z NO_INFOMSGS
Pomija wszystkie komunikaty informacyjne.
LICZYĆ
Przeczyść pamięć podręczną planu zapytania z każdego węzła obliczeniowego. Jest to wartość domyślna.
CAŁY
Przeczyść pamięć podręczną planu zapytania z każdego węzła obliczeniowego i z węzła sterującego.
Nuta
Począwszy od programu SQL Server 2016 (13.x), można użyć ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
do wyczyszczenia pamięci podręcznej procedury (planu) dla bieżącej bazy danych.
Uwagi
Użyj DBCC FREEPROCCACHE
, aby dokładnie wyczyścić pamięć podręczną planu. Wyczyszczenie pamięci podręcznej procedury (planu) powoduje eksmitowanie wszystkich planów, a przychodzące wykonania zapytań skompilują nowy plan, zamiast ponownie stosować poprzednio buforowany plan.
Może to spowodować nagły, tymczasowy spadek wydajności zapytań w miarę wzrostu liczby nowych kompilacji. Dla każdego wyczyszczonego magazynu pamięci podręcznej w pamięci podręcznej planu dziennik błędów programu SQL Server będzie zawierać następujący komunikat informacyjny:
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.
Ten komunikat jest rejestrowany co pięć minut, o ile pamięć podręczna jest opróżniona w tym przedziale czasu.
Następujące operacje ponownej konfiguracji również wyczyścić pamięć podręczną procedury:
- liczba zasobników pamięci podręcznej sprawdzania dostępu
- limit przydziału pamięci podręcznej sprawdzania dostępu
- clr włączone
- próg kosztów równoległości
- łączenie łańcuchów własności między bazami danych
- tworzenie pamięci indeksu
- maksymalny stopień równoległości
- maksymalna pamięć serwera
- maksymalny rozmiar ponownego tłumaczenia tekstu
- maksymalna liczba wątków roboczych
- minimalna ilość pamięci na kwerendę
- minimalna pamięć serwera
- limit kosztów zarządcy zapytań
- oczekiwanie na zapytanie
- limit czasu zapytania zdalnego
- opcje użytkownika
W usłudze Azure SQL Database DBCC FREEPROCCACHE
działa na wystąpieniu aparatu bazy danych hostująca bieżącą bazę danych lub pulę elastyczną. Wykonanie DBCC FREEPROCCACHE
w bazie danych użytkownika czyści pamięć podręczną planu dla tej bazy danych. Jeśli baza danych znajduje się w elastycznej puli, wyczyści również pamięć podręczną planu we wszystkich innych bazach danych w tej elastycznej puli. Wykonanie polecenia w bazie danych master
nie ma wpływu na inne bazy danych na tym samym serwerze logicznym. Wykonanie tego polecenia w bazie danych przy użyciu celu usługi Podstawowa, S0 lub S1 może wyczyścić pamięć podręczną planu w innych bazach danych przy użyciu tych celów usługi na tym samym serwerze logicznym.
Zestawy wyników
Gdy klauzula WITH NO_INFOMSGS
nie jest określona, DBCC FREEPROCCACHE
zwraca następujące elementy:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Uprawnienia
Dotyczy: SQL Server, Analytics Platform System (PDW)
- Wymaga uprawnienia ALTER SERVER STATE na serwerze.
Dotyczy: Azure SQL Database
- Wymaga członkostwa w roli serwera ##MS_ServerStateManager##.
Dotyczy: Azure Synapse Analytics
- Wymaga członkostwa w db_owner stałej roli serwera.
Uwagi dotyczące usługi Azure Synapse Analytics i systemu platformy analizy (PDW)
Jednocześnie można uruchamiać wiele poleceń DBCC FREEPROCCACHE
.
W usłudze Azure Synapse Analytics lub Analytics Platform System (PDW) wyczyszczenie pamięci podręcznej planu może spowodować tymczasowy spadek wydajności zapytań, ponieważ zapytania przychodzące skompilują nowy plan zamiast ponownego użycia dowolnego wcześniej buforowanego planu.
DBCC FREEPROCCACHE (COMPUTE)
powoduje ponowne kompilowania zapytań programu SQL Server tylko wtedy, gdy są one uruchamiane w węzłach obliczeniowych. Nie powoduje to ponownego skompilowania równoległego planu zapytania wygenerowanego w węźle Kontrolnym przez usługę Azure Synapse Analytics ani Analytics Platform System (PDW).
DBCC FREEPROCCACHE
można anulować podczas wykonywania.
Ograniczenia i ograniczenia dotyczące usług Azure Synapse Analytics i Analytics Platform System (PDW)
DBCC FREEPROCCACHE
nie można uruchomić w ramach transakcji.
DBCC FREEPROCCACHE
nie jest obsługiwana w instrukcji EXPLAIN.
Metadane dla usługi Azure Synapse Analytics i systemu platformy analizy (PDW)
Po uruchomieniu DBCC FREEPROCCACHE
zostanie dodany nowy wiersz do widoku systemu sys.pdw_exec_requests
.
Przykłady: SQL Server
A. Czyszczenie planu zapytania z pamięci podręcznej planu
Poniższy przykład umożliwia wyczyszczenie planu zapytania z pamięci podręcznej planu przez określenie dojścia planu zapytania. Aby upewnić się, że przykładowe zapytanie znajduje się w pamięci podręcznej planu, zapytanie jest najpierw wykonywane. Zapytania dotyczące dynamicznych widoków zarządzania sys.dm_exec_cached_plans
i sys.dm_exec_sql_text
są zwracane w celu zwrócenia dojścia planu dla zapytania.
Plan obsługuje wartość z zestawu wyników jest następnie wstawiany do instrukcji DBCC FREEPROCACHE
, aby usunąć tylko ten plan z pamięci podręcznej planu.
USE AdventureWorks2022;
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. Wyczyść wszystkie plany z pamięci podręcznej planu
Poniższy przykład czyści wszystkie elementy z pamięci podręcznej planu. Klauzula WITH NO_INFOMSGS
jest określona, aby zapobiec wyświetlaniu komunikatu informacyjnego.
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
C. Wyczyść wszystkie wpisy pamięci podręcznej skojarzone z pulą zasobów
Poniższy przykład czyści wszystkie wpisy pamięci podręcznej skojarzone z określoną pulą zasobów. Widok sys.dm_resource_governor_resource_pools
jest najpierw odpytywane w celu uzyskania wartości pool_name.
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE ('default');
GO
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Podstawowa składnia DBCC FREEPROCCACHE
Poniższy przykład usuwa wszystkie istniejące pamięci podręczne planu zapytań z węzłów obliczeniowych. Mimo że kontekst jest ustawiony na UserDbSales
, pamięć podręczna planu zapytań węzła obliczeniowego dla wszystkich baz danych zostanie usunięta. Klauzula WITH NO_INFOMSGS
uniemożliwia wyświetlanie komunikatów informacyjnych w wynikach.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;
Poniższy przykład zawiera te same wyniki co w poprzednim przykładzie, z tą różnicą, że komunikaty informacyjne będą wyświetlane w wynikach.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE);
Gdy żądania komunikatów informacyjnych i wykonanie zakończy się pomyślnie, wyniki zapytania będą miały jeden wiersz na węzeł obliczeniowy.
E. Udzielanie uprawnień do uruchamiania DBCC FREEPROCCACHE
W poniższym przykładzie przedstawiono uprawnienia logowania David
do uruchamiania DBCC FREEPROCCACHE
.
GRANT ALTER SERVER STATE TO David;
GO