it-swarm.com.de

Unterschied zwischen FreeProcCache und FreeSystemCache

Zur Zeit starte ich DBCC FREEPROCCACHE wenn ich Informationen zwischen laufenden SQL-Abfragen aus dem Pufferpool löschen möchte. Ich überprüfte jedoch this Technet-Artikel, der auf DBCC FREESYSTEMCACHE. Welche Caches löscht FREESYSTEMCACHE, die FREEPROCCACHE nicht?

12
Sean Long

Welche Caches löscht FREESYSTEMCACHE, was FREEPROCCACHE nicht tut?

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 z.B. Sie möchten alle Caches löschen, die Sie ausführen werden

DBCC FREESYSTEMCACHE ('ALL')

damit bestimmte Caches gelöscht werden können, 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 Punkte auf dieser detaillierten Ebene 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.

Sie können sich also vorstellen, dass dies nur mit dem Plan-Cache zusammenhängt, mit der Möglichkeit, bestimmte Pläne mit dem Plan-Handle und/oder dem Pool-Namen aus dem Cache zu entfernen.

Spaß mit DBCC FREEPROCCACHE ist ein Blog von Glenn Berry

25
Kin Shah