Różnica między FreeProcCache i FreeSystemCache

12

Obecnie uruchamiam, DBCC FREEPROCCACHEgdy chcę usunąć informacje z puli buforów między uruchomionymi zapytaniami SQL. Jednak przeglądałem odniesienia do tego artykułu w Technet DBCC FREESYSTEMCACHE. Jakie pamięci podręczne nie są FREESYSTEMCACHEusuwane FREEPROCCACHE?

Sean Long
źródło

Odpowiedzi:

25

Jakie pamięci podręczne czyści FREESYSTEMCACHE, których nie ma FREEPROCCACHE?

Istnieje wiele pamięci podręcznych systemu dostępnych w SQL Server. Mam na myśli SQL 2008R2 (tak jak na nim testowałem).

Poniższe zapytanie zwróci wszystkie dostępne pamięci podręczne:

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

więc np. chcesz wyczyścić wszystkie pamięci podręczne, które uruchomisz

DBCC FREESYSTEMCACHE ('ALL')

aby wyczyścić określone pamięci podręczne, możesz uruchomić

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)

Używając FREEPROCCACHE, nie będziesz w stanie wyczyścić wszystkich wyżej wymienionych na tym szczegółowym poziomie.

FREEPROCCACHE ==> z BOL

Usuwa wszystkie elementy z pamięci podręcznej planu, usuwa określony plan z pamięci podręcznej planu, określając uchwyt planu lub uchwyt SQL, lub usuwa wszystkie wpisy pamięci podręcznej powiązane z określoną pulą zasobów.

Zasadniczo możesz więc pomyśleć, że jest to związane tylko z pamięcią podręczną planu z możliwością usuwania określonych planów z pamięci podręcznej za pomocą uchwytu planu i / lub nazwy puli.

Zabawa z DBCC FREEPROCCACHE to blog od Glenna Berry'ego

Kin Shah
źródło