답변:
FREESYSTEMCACHE가 FREEPROCCACHE가 수행하지 않는 캐시는 무엇입니까?
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를 사용하면 위에서 언급 한 세부 수준에서 위에서 언급 한 모든 항목을 지울 수 없습니다.
BOL 에서 FREEPROCCACHE ==>
계획 캐시에서 모든 요소를 제거하거나 계획 핸들 또는 SQL 핸들을 지정하여 계획 캐시에서 특정 계획을 제거하거나 지정된 자원 풀과 연관된 모든 캐시 항목을 제거합니다.
따라서 기본적으로 계획 핸들 및 / 또는 풀 이름을 사용하여 캐시에서 특정 계획을 제거 할 수있는 계획 캐시에만 관련된 것으로 생각할 수 있습니다.
DBCC FREEPROCCACHE와 재미 는 Glenn Berry의 블로그입니다