서버 개발/데이터베이스 기타 & 팁

[MSSQL] 캐시 확인및 삭제

지노윈 2020. 4. 30. 15:56
반응형

SQL 테스트시 다음의 명령을 실행 후 테스트합니다.

-- 현재 데이터베이스의 모든 더티 페이지를 디스크에 쓰고 버퍼를 정리
CHECKPOINT
GO
-- 버퍼 풀 초기화
DBCC DROPCLEANBUFFERS
GO
-- 프로시저 캐시 초기화
DBCC FREEPROCCACHE
GO

 

 

캐시 부분 확인및 삭제 방법

 

사용중인 캐시 추출 

SELECT * FROM SYS.SYSCACHEOBJECTS WHERE [SQL] LIKE '%테이블이름%' 

SELECT plan_handle, st.text 
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st 
WHERE text LIKE N'%테이블이름%'; 

 


원하는 캐시 삭제

DBCC FREEPROCCACHE (0x06000500AECB3E1FD06EF56AB602000001000000000000000000000000000000000000000000000000000000)



 데이터베이스 전체 캐시 삭제

선택한 DB의 캐시 삭제

SELECT * FROM SYSDATABASES 

SELECT objtype, dbid, usecounts, status, sqlbytes, sql, * 
FROM master.dbo.syscacheobjects 
WHERE dbid = [조회할 dbid] 

DBCC FlushPROCINDB([삭제할 dbid])

또는

 

모든 DB의 캐시 삭제

DBCC FREEPROCCACHE
GO

 

버퍼 풀 초기화

DBCC DROPCLEANBUFFERS
GO

 

DBCC DROPCLEANBUFFERS를 사용하면 서버를 종료하고 다시 시작하지 않아도 완전히 빈 버퍼 캐시를 사용하여 쿼리를 테스트할 수 있습니다. 버퍼 풀에서 빈 버퍼를 삭제하고 columnstore 개체 풀에서 columnstore 개체를 삭제하려면 먼저 CHECKPOINT를 사용해 콜드 버퍼 캐시를 생성합니다. 이 과정은 현재 데이터베이스에 대한 모든 커밋되지 않은 페이지를 디스크로 기록하고 버퍼를 비웁니다. 버퍼를 비운 후에 DBCC DROPCLEANBUFFERS 명령을 실행해 버퍼 풀에서 모든 버퍼를 제거할 수 있습니다.