Відповіді:
Якими кешами стирає 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 - це блог від Глена Беррі