FreeProcCache와 FreeSystemCache의 차이점


12

현재 DBCC FREEPROCCACHE실행중인 SQL 쿼리 사이의 버퍼 풀에서 정보를 지우려고 할 때 실행 됩니다. 그러나, 나는 검토 된 TechNet 문서의 참조를 DBCC FREESYSTEMCACHE. 무엇 캐시 않는 FREESYSTEMCACHE그 닦아 FREEPROCCACHE하지 않는 이유는 무엇입니까?

답변:


25

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의 블로그입니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.