Differenza tra FreeProcCache e FreeSystemCache


12

Attualmente corro DBCC FREEPROCCACHEquando voglio cancellare le informazioni dal pool di buffer tra le query SQL in esecuzione. Tuttavia, stavo rivedendo questo articolo di riferimento Technet DBCC FREESYSTEMCACHE. Quali cache FREESYSTEMCACHEcancella che FREEPROCCACHEnon lo fa?

Risposte:


25

Quali cache memorizza FREESYSTEMCACHE e FREEPROCCACHE no?

Esistono molte cache di sistema disponibili in SQL Server. Mi riferisco a SQL 2008R2 (come ho testato su di esso).

La query seguente restituirà tutte le cache disponibili:

--- 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

quindi, ad esempio, vuoi cancellare tutte le cache che eseguirai

DBCC FREESYSTEMCACHE ('ALL')

per cache specifiche da cancellare è possibile eseguire

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)

Usando FREEPROCCACHE, non sarai in grado di cancellare tutto quanto sopra menzionato a quel livello dettagliato.

FREEPROCCACHE ==> da BOL

Rimuove tutti gli elementi dalla cache del piano, rimuove un piano specifico dalla cache del piano specificando un handle di piano o un handle SQL o rimuove tutte le voci della cache associate a un pool di risorse specificato.

Quindi, in sostanza, potresti considerarlo come correlato solo alla cache del piano con la possibilità di rimuovere piani specifici dalla cache con l'handle del piano e il nome del pool.

Divertimento con DBCC FREEPROCCACHE è un blog di Glenn Berry

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.