2012. 7. 30. 11:07

DBCC CHECKDB문은 운영중인 서버에서 실행하지 않는 것이 권고사항입니다.(, SQL Server 2005이상)

SQL Server 2000이하는 테이블 레벨에서 스키마 잠금이 일어납니다.

테이블에 대한 DML, DDL 작업이 차단됩니다… 덜덜

그렇기 때문에 SQL Server 2000 버전에서 운영 중 실행은 절대 금지사항입니다.

 

SQL Server 2005에서는 왜? 실행하지 않는 게 권고사항일까요?

눈치 빠른 분들은 아시겠지만 2005부터 스냅숏이 생겼죠~

그래서 엔진 내부에서 읽기 전용 데이터베이스 스냅숏을 만들어 동작하기 때문에

DBCC CHECKDB가 실행될 때 블로킹(차단) 및 동시성 문제를 방지할 수 있습니다.

 

“어 그럼 DBCC CHECKDB를 실행해도 되잖아요?

“안됩니다!

 

DBCC CHECKDB의 동작 매커니즘을 잠깐 살펴보자면…

해당 DB 내 모든 개체의 무결성 및 일관성을 확인하기 위해

페이지(DB파일의 최소단위 8KB)를 디스크에서 메모리로 퍼 올립니다.

 

메모리가 왕창 크면 좋겠지만 우리의 메모리는 데이터 보다 작아요..ㅠㅠ

그래서 데이터 중 일부를 tempdb로 스풀링하게 됩니다.

그때 tempdb가 위치한 디스크에서 IO 작업 병목현상이 발생하게 됩니다.(tempdb는 저 혼자 쓰는게 아니니까요~)

또한 CheckDB 실행 시 디스크에서 데이터를 최적화해서 읽으려 하기 때문에 같은

디스크(파일그룹) 부분에 Access하는 쿼리는 위와 같은 이유로 느려질 수 있습니다.

 

지금까지 DBCC CheckDB에 대해서 알아보았습니다.

 

~


Reference : http://msdn.microsoft.com/ko-kr/library/ms176064.aspx


'SQL Server > Tips' 카테고리의 다른 글

SQL Server 복합 인덱스 설정 시 주의사항  (2) 2012.08.13
SQL Server Truncate Table's minimally logged  (0) 2012.08.07
SQL Server COALESCE 함수  (0) 2012.07.26
SQL Server KILL WITH STATUSONLY 옵션  (0) 2012.07.26
링크  (0) 2012.07.19
Posted by 니노G