Megosztás a következőn keresztül:


DBCC FREEPROCCACHE (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Eltávolítja az összes elemet a tervgyorsítótárból, eltávolít egy adott tervet a tervgyorsítótárból egy tervleíró vagy EGY SQL-leíró megadásával, vagy eltávolítja a megadott erőforráskészlethez társított összes gyorsítótár-bejegyzést.

Jegyzet

DBCC FREEPROCCACHE nem törli a natívan lefordított tárolt eljárások végrehajtási statisztikáit. Az eljárásgyorsítótár nem tartalmaz információt a natívan lefordított tárolt eljárásokról. Az eljárásvégrehajtásokból gyűjtött végrehajtási statisztikák megjelennek a DMV-k végrehajtási statisztikáiban: sys.dm_exec_procedure_stats (Transact-SQL) és sys.dm_exec_query_plan (Transact-SQL).

Transact-SQL szintaxis konvenciói

Szintaxis

Az SQL Server és az Azure SQL Database szintaxisa:

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

Az Azure Synapse Analytics and Analytics Platform System (PDW) szintaxisa:

DBCC FREEPROCCACHE [ ( COMPUTE | ALL ) ]
     [ WITH NO_INFOMSGS ]
[;]

Érvek

( { plan_handle | sql_handle | pool_name } )

plan_handle egyedileg azonosítja egy olyan köteg lekérdezési tervét, amelynek a terve a tervgyorsítótárban található. plan_handlevarbinary(64), és a következő dinamikus felügyeleti objektumokból szerezhető be:

sql_handle a törölni kívánt köteg SQL-leírója. sql_handlevarbinary(64), és a következő dinamikus felügyeleti objektumokból szerezhető be:

pool_name egy Resource Governor-erőforráskészlet neve. pool_namesysname, és a sys.dm_resource_governor_resource_pools dinamikus felügyeleti nézet lekérdezésével szerezhető be.

Ha erőforrás-kormányzó számítási feladatcsoportot szeretne társítani egy erőforráskészlethez, kérdezze le a sys.dm_resource_governor_workload_groups dinamikus felügyeleti nézetet. A munkamenet számítási feladatcsoportjáról a sys.dm_exec_sessions dinamikus felügyeleti nézetet kérdezheti le.

A NO_INFOMSGS

Letiltja az összes tájékoztató üzenetet.

SZÁMLÁL

Törölje a lekérdezésterv gyorsítótárát az egyes számítási csomópontokból. Ez az alapértelmezett érték.

ÖSSZES

Törölje a lekérdezésterv gyorsítótárát az egyes számítási csomópontokból és a Vezérlő csomópontból.

Jegyzet

Az SQL Server 2016 -tól kezdve (13.x) ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE használható az aktuális adatbázis eljárás-(terv-) gyorsítótárának törléséhez.

Megjegyzések

A DBCC FREEPROCCACHE használatával gondosan törölje a tervgyorsítótárat. Az eljárás (terv) gyorsítótárának törlése az összes terv kiürítését eredményezi, és a bejövő lekérdezések végrehajtása egy új tervet állít össze a korábban gyorsítótárazott tervek újbóli használata helyett.

Ez a lekérdezési teljesítmény hirtelen, átmeneti csökkenését okozhatja az új fordítások számának növekedésével. A tervgyorsítótár minden törölt gyorsítótára esetében az SQL Server hibanaplója a következő tájékoztató üzenetet tartalmazza:

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.

Ezt az üzenetet öt percenként naplózza a rendszer, amíg a gyorsítótárat az adott időintervallumon belül kiüríti a rendszer.

Az alábbi újrakonfigurálási műveletek az eljárásgyorsítótárat is törlik:

  • hozzáférés-ellenőrzés gyorsítótár-gyűjtők száma
  • hozzáférés-ellenőrzés gyorsítótárkvóta
  • clr engedélyezve
  • párhuzamosság költségküszöbe
  • adatbázis-tulajdonjogok közötti láncolás
  • index– memória létrehozása
  • a párhuzamosság maximális foka
  • kiszolgálói memória maximális mennyisége
  • maximális szöveges repl méret
  • feldolgozói szálak maximális száma
  • minimális memória lekérdezésenként
  • minimális kiszolgálómemória
  • lekérdezés-vezérlő költségkorlátja
  • lekérdezési várakozás
  • távoli lekérdezés időtúllépése
  • felhasználói beállítások

Az Azure SQL Database-ben DBCC FREEPROCCACHE az aktuális adatbázist vagy rugalmas készletet üzemeltető adatbázismotor-példányon működik. A DBCC FREEPROCCACHE felhasználói adatbázisban való végrehajtása törli az adatbázis tervgyorsítótárát. Ha az adatbázis rugalmas készletben található, a csomag gyorsítótárát is törli a rugalmas készlet többi adatbázisában. A parancs végrehajtása az master-adatbázisban nincs hatással az ugyanazon a logikai kiszolgálón lévő többi adatbázisra. Ha ezt a parancsot alapszintű, S0 vagy S1 szolgáltatási célkitűzéssel hajtja végre egy adatbázisban, akkor a csomag gyorsítótára más adatbázisokban is törlődhet, és ugyanezeket a szolgáltatási célkitűzéseket használja ugyanazon a logikai kiszolgálón.

Eredményhalmazok

Ha a WITH NO_INFOMSGS záradék nincs megadva, DBCC FREEPROCCACHE a következőt adja vissza:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Engedélyek

A következőkre vonatkozik: SQL Server, Analytics Platform System (PDW)

  • A kiszolgálón ALTER SERVER STATE engedély szükséges.

A következőkre vonatkozik: Azure SQL Database

  • A kiszolgálói szerepkörhöz ##MS_ServerStateManager##tagság szükséges.

A következőkre vonatkozik: Azure Synapse Analytics

  • A rögzített kiszolgálói szerepkör db_owner tagságot igényel.

Megjegyzések az Azure Synapse Analytics and Analytics Platform Systemhez (PDW)

Egyszerre több DBCC FREEPROCCACHE parancs is futtatható.

Az Azure Synapse Analytics vagy az Analytics Platform System (PDW) esetében a terv gyorsítótárának törlése ideiglenesen csökkentheti a lekérdezési teljesítményt, mivel a bejövő lekérdezések új csomagot állítanak össze a korábban gyorsítótárazott csomagok újbóli használata helyett.

DBCC FREEPROCCACHE (COMPUTE) csak akkor okoz újrafordítási lekérdezéseket az SQL Server, ha azok a számítási csomópontokon futnak. Ez nem okozza, hogy az Azure Synapse Analytics vagy az Analytics Platform System (PDW) újrafordítsa a vezérlőcsomóponton létrehozott párhuzamos lekérdezési tervet.

DBCC FREEPROCCACHE a végrehajtás során megszakítható.

Az Azure Synapse Analytics and Analytics Platform System (PDW) korlátozásai és korlátozásai

DBCC FREEPROCCACHE nem futtatható tranzakción belül.

DBCC FREEPROCCACHE a EXPLAIN utasítás nem támogatja.

Az Azure Synapse Analytics and Analytics Platform System (PDW) metaadatai

A sys.pdw_exec_requests futtatásakor új sor kerül a DBCC FREEPROCCACHE rendszernézetbe.

Példák: SQL Server

Egy. Lekérdezésterv törlése a terv gyorsítótárából

Az alábbi példa a lekérdezésterv-gyorsítótárból törli a lekérdezéstervet a lekérdezésterv leírójának megadásával. Annak érdekében, hogy a példa lekérdezés a terv gyorsítótárában legyen, a lekérdezés először végrehajtásra kerül. A rendszer lekérdezi a sys.dm_exec_cached_plans és sys.dm_exec_sql_text dinamikus felügyeleti nézeteket, hogy visszaadja a lekérdezés tervleíróját.

A tervkezelő érték az eredményhalmazból be lesz szúrva a DBCC FREEPROCACHE utasításba, hogy csak az adott tervet távolítsa el a terv gyorsítótárából.

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

Itt van az eredményhalmaz.

plan_handle                                         text
--------------------------------------------------  -----------------------------
0x060006001ECA270EC0215D05000000000000000000000000  SELECT * FROM Person.Address;
  
(1 row(s) affected)
-- Remove the specific plan from the cache.
DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO

B. Az összes terv törlése a tervgyorsítótárból

Az alábbi példa törli az összes elemet a tervgyorsítótárból. A WITH NO_INFOMSGS záradék meg van adva, hogy megakadályozza az információs üzenet megjelenítését.

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

C. Erőforráskészlethez társított összes gyorsítótár-bejegyzés törlése

Az alábbi példa törli a megadott erőforráskészlethez társított összes gyorsítótár-bejegyzést. A sys.dm_resource_governor_resource_pools nézetet először lekérdezi a pool_nameértékének lekéréséhez.

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

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

D. A DBCC FREEPROCCACHE alapszintű szintaxisa

Az alábbi példa eltávolítja az összes meglévő lekérdezésterv-gyorsítótárat a számítási csomópontokról. Bár a környezet UserDbSalesvan beállítva, a számítási csomópont lekérdezési tervének gyorsítótára minden adatbázis esetében törlődik. A WITH NO_INFOMSGS záradék megakadályozza, hogy az információs üzenetek megjelenjenek az eredményekben.

USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE) WITH NO_INFOMSGS;

Az alábbi példában ugyanazok az eredmények jelennek meg, mint az előző példában, kivéve, hogy az információs üzenetek megjelennek az eredményekben.

USE UserDbSales;
DBCC FREEPROCCACHE (COMPUTE);

Ha a rendszer tájékoztató üzeneteket kér, és a végrehajtás sikeres, a lekérdezés eredményei számítási csomópontonként egy sort kapnak.

E. Engedély megadása a DBCC FREEPROCCACHE futtatásához

Az alábbi példa a bejelentkezési David engedélyt ad a DBCC FREEPROCCACHEfuttatására.

GRANT ALTER SERVER STATE TO David;
GO

Lásd még: