Різниця між FreeProcCache і FreeSystemCache


12

В даний час я працюю, DBCC FREEPROCCACHEколи хочу видалити інформацію з пулу буфера між запущеними SQL запитами. Однак я переглядав цю статтю Technet, в якій посилався DBCC FREESYSTEMCACHE. Які кеші FREESYSTEMCACHEвидаляє, що FREEPROCCACHEне робить?

Відповіді:


25

Якими кешами стирає FREESYSTEMCACHE, що ФРЕПРОКАЧЕ не робить?

У SQL Server є багато системних кеш-пам'яток. Я маю на увазі SQL 2008R2 (як я тестував на ньому).

Нижче запит поверне всі доступні кеші:

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

наприклад, наприклад, ви хочете очистити всі кеші, які будете працювати

DBCC FREESYSTEMCACHE ('ALL')

щоб очистити певні кеші, можна запустити

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)

Використовуючи FREEPROCCACHE, ви не зможете очистити все вищезазначене на тому детальному рівні.

FREEPROCCACHE ==> від BOL

Видаляє всі елементи з кешу плану, видаляє певний план з кешу плану, вказавши ручку плану або ручку SQL, або видаляє всі записи кешу, пов'язані з визначеним пулом ресурсів.

Отже, по суті, ви можете вважати це лише пов'язаним з кешем плану з можливістю видалення конкретних планів із кеша з ручкою плану та назвою пулу.

Розвага з DBCC FREEPROCCACHE - це блог від Глена Беррі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.