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