Unterschied zwischen FreeProcCache und FreeSystemCache

12

Derzeit wird ausgeführt, DBCC FREEPROCCACHEwenn zwischen dem Ausführen von SQL-Abfragen Informationen aus dem Pufferpool gelöscht werden sollen. Ich habe jedoch die Referenzierung dieses Technet-Artikels überprüft DBCC FREESYSTEMCACHE. Welche Caches FREESYSTEMCACHEwischen das FREEPROCCACHEnicht?

Sean Long
quelle

Antworten:

25

Welche Caches löscht FREESYSTEMCACHE, die FREEPROCCACHE nicht löscht?

In SQL Server sind viele Systemcaches verfügbar. Ich beziehe mich auf SQL 2008R2 (wie ich es getestet habe).

Die folgende Abfrage gibt alle verfügbaren Caches zurück:

--- ONLY for Educational purpose. Don't attempt to run on PROD !!

select 'DBCC freesystemcache ('+''''+name+''''+')'  from   sys.dm_os_memory_clerks group by name
-- 155 rows

So möchten Sie beispielsweise alle Caches löschen, die Sie ausführen

DBCC FREESYSTEMCACHE ('ALL')

Damit bestimmte Caches gelöscht werden, können Sie ausführen

DBCC FREESYSTEMCACHE ('userdatabase') -- cleans cache for specific user database
DBCC FREESYSTEMCACHE ('tempdb')  -- clears cache for tempdb
DBCC FREESYSTEMCACHE ('Temporary Tables & Table Variables') -- clears all the temp table and variables
.. and many more (see above 155 rows returned from sql server 2008R2)

Mit FREEPROCCACHE können Sie nicht alle oben genannten Details auf dieser Detailebene löschen.

FREEPROCCACHE ==> von BOL

Entfernt alle Elemente aus dem Plan-Cache, entfernt einen bestimmten Plan aus dem Plan-Cache, indem ein Plan-Handle oder ein SQL-Handle angegeben wird, oder entfernt alle Cache-Einträge, die einem angegebenen Ressourcenpool zugeordnet sind.

Im Wesentlichen können Sie sich vorstellen, dass es sich nur um einen Plan-Cache handelt, der bestimmte Pläne mit dem Plan-Handle und / oder dem Pool-Namen aus dem Cache entfernen kann.

Spaß mit DBCC FREEPROCCACHE ist ein Blog von Glenn Berry

Kin Shah
quelle