Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Tar bort alla element från plancachen, tar bort en specifik plan från plancachen genom att ange en planreferens eller SQL-handtag eller tar bort alla cacheposter som är associerade med en angiven resurspool.
Not
DBCC FREEPROCCACHE
rensar inte körningsstatistiken för internt kompilerade lagrade procedurer. Procedurens cache innehåller inte information om internt kompilerade lagrade procedurer. All körningsstatistik som samlas in från procedurkörningar visas i DMV:er för körningsstatistik: sys.dm_exec_procedure_stats (Transact-SQL) och sys.dm_exec_query_plan (Transact-SQL).
Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server och Azure SQL Database:
DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]
Syntax för Azure Synapse Analytics and Analytics Platform System (PDW):
DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ]
[ WITH NO_INFOMSGS ]
[;]
Argument
( { plan_handle | sql_handle | pool_name } )
plan_handle identifierar unikt en frågeplan för en batch som har körts och vars plan finns i plancachen. plan_handle är varbinary(64) och kan hämtas från följande dynamiska hanteringsobjekt:
- sys.dm_exec_cached_plans
- sys.dm_exec_requests
- sys.dm_exec_query_memory_grants
- sys.dm_exec_query_stats
sql_handle är SQL-handtaget för batchen som ska rensas. sql_handle är varbinary(64) och kan hämtas från följande dynamiska hanteringsobjekt:
- 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 är namnet på resurspoolen Resource Governor. pool_name är sysname och kan hämtas genom att fråga sys.dm_resource_governor_resource_pools dynamisk hanteringsvy.
Om du vill associera en resource governor-arbetsbelastningsgrupp med en resurspool frågar du sys.dm_resource_governor_workload_groups dynamisk hanteringsvy. Information om arbetsbelastningsgruppen för en session finns i vyn sys.dm_exec_sessions dynamisk hantering.
MED NO_INFOMSGS
Undertrycker alla informationsmeddelanden.
BERÄKNA
Rensa frågeplanens cacheminne från varje beräkningsnod. Det här är standardvärdet.
ALLA
Rensa frågeplanens cacheminne från varje beräkningsnod och från kontrollnoden.
Not
Från och med SQL Server 2016 (13.x) kan ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
användas för att rensa procedurens cache för den aktuella databasen.
Anmärkningar
Använd DBCC FREEPROCCACHE
för att rensa plancachen noggrant. Om du rensar procedurens cacheminne (plan) tas alla planer bort, och inkommande frågekörningar kompilerar en ny plan i stället för att återanvända någon tidigare cachelagrad plan.
Detta kan orsaka en plötslig, tillfällig minskning av frågeprestanda när antalet nya kompileringar ökar. För varje rensat cachelager i plancachen innehåller SQL Server-felloggen följande informationsmeddelande:
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.
Det här meddelandet loggas var femte minut så länge cacheminnet rensas inom det tidsintervallet.
Följande omkonfigureringsåtgärder rensar även procedurens cacheminne:
- antal cacheminnen för åtkomstkontroll
- cachekvot för åtkomstkontroll
- clr aktiverat
- kostnadströskel för parallellitet
- kors db ägarkoppling
- index skapa minne
- maximal grad av parallellitet
- maximalt serverminne
- maximal textomplingsstorlek
- max worker threads
- min minne per fråga
- min serverminne
- kostnadsgräns för frågeguvernör
- frågevänte
- tidsgräns för fjärrfråga
- användaralternativ
I Azure SQL Database agerar DBCC FREEPROCCACHE
på databasmotorinstansen som är värd för den aktuella databasen eller den elastiska poolen. Om du kör DBCC FREEPROCCACHE
i en användardatabas rensas plancachen för databasen. Om databasen finns i en elastisk pool rensas även plancachen i alla andra databaser i den elastiska poolen. Körning av kommandot i master
-databasen har ingen effekt på andra databaser på samma logiska server. Om du kör det här kommandot i en databas med tjänstmålet Basic, S0 eller S1 kan plancachen rensas i andra databaser med hjälp av dessa tjänstmål på samma logiska server.
Resultatuppsättningar
När WITH NO_INFOMSGS
-satsen inte har angetts returnerar DBCC FREEPROCCACHE
:
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Behörigheter
Gäller för: SQL Server, Analytics Platform System (PDW)
- Kräver ALTER SERVER STATE behörighet på servern.
Gäller för: Azure SQL Database
- Kräver medlemskap i serverrollen ##MS_ServerStateManager##.
Gäller för: Azure Synapse Analytics
- Kräver medlemskap i db_owner fast serverroll.
Kommentarer för Azure Synapse Analytics and Analytics Platform System (PDW)
Flera DBCC FREEPROCCACHE
kommandon kan köras samtidigt.
I Azure Synapse Analytics eller Analytics Platform System (PDW) kan rensning av plancachen orsaka en tillfällig minskning av frågeprestanda när inkommande frågor kompilerar en ny plan i stället för att återanvända någon tidigare cachelagrad plan.
DBCC FREEPROCCACHE (COMPUTE)
gör bara att SQL Server kan kompilera om frågor när de körs på beräkningsnoderna. Det gör inte att Azure Synapse Analytics eller Analytics Platform System (PDW) kompilerar om den parallella frågeplan som genereras på kontrollnoden.
DBCC FREEPROCCACHE
kan avbrytas under körningen.
Begränsningar och begränsningar för Azure Synapse Analytics and Analytics Platform System (PDW)
DBCC FREEPROCCACHE
kan inte köras inom en transaktion.
DBCC FREEPROCCACHE
stöds inte i en EXPLAIN-instruktion.
Metadata för Azure Synapse Analytics and Analytics Platform System (PDW)
En ny rad läggs till i sys.pdw_exec_requests
systemvyn när DBCC FREEPROCCACHE
körs.
Exempel: SQL Server
A. Rensa en frågeplan från plancachen
I följande exempel rensas en frågeplan från plancachen genom att ange frågeplanshandtaget. För att säkerställa att exempelfrågan finns i plancachen körs frågan först.
sys.dm_exec_cached_plans
och sys.dm_exec_sql_text
dynamiska hanteringsvyer efterfrågas för att returnera planhandtaget för frågan.
Planreferensvärdet från resultatuppsättningen infogas sedan i DBCC FREEPROCACHE
-instruktionen för att endast ta bort planen från plancachen.
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
Här är resultatuppsättningen.
plan_handle text
-------------------------------------------------- -----------------------------
0x060006001ECA270EC0215D05000000000000000000000000 SELECT * FROM Person.Address;
(1 row(s) affected)
-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO
B. Rensa alla planer från plancachen
I följande exempel rensas alla element från plancachen. WITH-NO_INFOMSGS
-satsen anges för att förhindra att informationsmeddelandet visas.
DBCC FREEPROCCACHE WITH NO_INFOMSGS;
C. Rensa alla cacheposter som är associerade med en resurspool
I följande exempel rensas alla cacheposter som är associerade med en angiven resurspool. Den sys.dm_resource_governor_resource_pools
vyn efterfrågas först för att hämta värdet för pool_name.
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE ('default');
GO
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
D. Grundläggande syntax för DBCC FREEPROCCACHE
I följande exempel tar du bort alla befintliga cacheminnen för frågeplan från beräkningsnoderna. Även om kontexten är inställd på UserDbSales
tas frågeplanen compute node caches för alla databaser bort. Satsen WITH NO_INFOMSGS
förhindrar att informationsmeddelanden visas i resultatet.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;
I följande exempel visas samma resultat som i föregående exempel, förutom att informationsmeddelanden visas i resultatet.
USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE);
När informationsmeddelanden begärs och körningen lyckas har frågeresultaten en rad per beräkningsnod.
E. Bevilja behörighet att köra DBCC FREEPROCCACHE
I följande exempel ges inloggningsbehörighet David
för att köra DBCC FREEPROCCACHE
.
GRANT ALTER SERVER STATE TO David;
GO