데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

SSD에서 DBCC CHECKDB 성능 벤치마킹

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

최근 들어 많은 기업이 데이터베이스에도 SSD를 사용하는 추세이다. 기존의 하드디스크와는 구조 및 동작 방식이 다른 SSD에서 DBCC CHECKDB를 사용하였을 때 성능은 어떨까?

 

이번 포스팅은 SQLSkills.com의 Paul S.Randal 블로그에 기재된 내용으로 필자가 이해한 내용을 바탕으로 정리하였으며 번역의 오류나 기술적 오류가 있음을 인지 한다. 자세한 내용은 원문을 참고하길 바란다.

 

SSD에서 DBCC CHECKDB를 테스트하였으며 다양한 degree of parallelism(DOP) 옵션과 traceflags를 함께 실행 하여 성능을 알아 보았다.

 

[테스트 변수]

  • DOP : 32, 16, 8, 4, 2, 1
  • Configuration : full DBCC CHECKDB , DBCC CHECKDB WITH PHYSICAL_ONLY(PO), PO + TF2549, PO + TF2562

 

 

[traceflag]

  • 2549 : 내부 목록 마다 고유한 디스크 드라이브 간에 데이터베이스 파일을 모두 읽을 수 있는 페이지를 생성
  • 2562 : "일괄" 데이터베이스에 인덱스 수에 관계없이 단일 DBCC CHECKDB 명령을 실행.

 

 

[Test System]

  • CPU : 2 socket, 8core E5-2670 Hyper Thread Enabled (Dell R720)
  • MEMORY : 64G
  • Test Database : AdventureWorks (조나단의 500기가 확장 스크립트)
  • SSD(2ea) : Fusion IO Drive 320G (Data file), Fusion IO Drive 320G (Log file, 8 files)

 

 

[full DBCC CHECKDB]

 

  • Full DBCC CHECKDB에서는 DOP 1보다 DOP 2, DOP 2보다 DOP4, DOP4 보다 DOP 8이 70 ~80% 성능 이점이 있다.
  • Full DBCC CHECKDB에서 DOP 8보다 높은 DOP에서는 성능 향상이 거의 없었다.
  • I/O가 대기 하지 않고 DOP 8 보다 더 높은 서버에서 DBCC CHECKDB를 수행한 결과 초당 0.5GB의 데이터를 처리할 수 있었다. SQL Server 2000에서는 분당 1GB를 기록했다.
  • 주요 성능은 DBCC CHECKDB WITH PHYSICAL_ONLY 옵션을 사용하였을 때 이다.

 

Full DBCC CHECKDB를 실행하는 동안 DBCC CHECKDB 내부 구조에 대한 일부 래치 경합이 DOP 8에서 나타나기 시작하지만 높은 DOPS에 제로 확장성을 제공하는 것만으로는 충분하다.

 

CDPACKET 대기를 위해 DOP 8, DOP 16, DOP32로 증가하는 동안 더 많이 발생한다. DOP 8 보다 높은 확장은 이득을 얻을 수 있을 것으로 예상되지 않는다.

 

[DBCC CHECKDB WITH PHYSICAL_ONLY]

 

  • DOP 4 와 DOP 8 그리고 추적 플래그를 함께 사용하였을 때 최상의 성능을 제공할 것으로 보인다.
  • 높은 DOPS는 점진적으로 성능이 악화 되었다. 대기 및 래치 통계 분석결과 더 높은 DOPS에서 경합이 증가 하였다.
  • 두 개의 추적 플래그는 나의 환경에서는 성능에 뚜렷한 영향을 마치지 않았다.

 

 

[정리]

DBCC CHECKDB를 실행 할 때 확장성으로는 DOP 8이 가장 좋은 성능을 보여 주었으며, WITH PHYSICAL_ONLY 옵션을 사용하였을 때 좋은 성능을 보여 주었다. 추적플래그는 PHYSICAL_ONLY 환경에서는 뚜렷한 영향을 미치지 않았다. SSD를 사용하는 경우 I/O 대기를 제거하여 효율적인 성능을 얻을 수 있다.

 

 

[참고자료]

http://www.sqlskills.com/blogs/paul/dbcc-checkdb-scalability-and-performance-benchmarking-on-ssds/

DBCC CHECK 명령에 대한 향상된 성능 : http://support.microsoft.com/kb/2634571

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1830 SQL Server 2012 Sp1 설치 이슈 및 해결 jevida(강성욱) 2016.09.30 1573
» SSD에서 DBCC CHECKDB 성능 벤치마킹 jevida(강성욱) 2016.09.30 1931
1828 Collation에 따른 ALTER DATABASE 실패 jevida(강성욱) 2016.09.30 1930
1827 LDF 파일이 잘리지 않는 이유 jevida(강성욱) 2016.09.30 2051
1826 Tempdb 경합 확인 및 해결 (Tempdb Contention) jevida(강성욱) 2016.09.30 2211
1825 SQL Server IO 병목 확인과 오해 jevida(강성욱) 2016.09.30 2497
1824 SQL Version에 따른 sp_prepare 정보 반환 jevida(강성욱) 2016.09.30 1711
1823 DReplay 활성 세션 초과 에러 jevida(강성욱) 2016.09.30 1542
1822 저장 프로시저 내 임시 테이블 사용과 프로시저 재컴파일 jevida(강성욱) 2016.09.30 1862
1821 NUMA 노드와 추척플래그 8048 jevida(강성욱) 2016.09.30 819
1820 온라인 인덱스 리빌드와 조각화 증가 jevida(강성욱) 2016.09.30 1602
1819 VARCHAR(MAX) and NTEXT 쿼리 성능 jevida(강성욱) 2016.09.30 4316
1818 CPU 리소스 상태에 따른 병렬 처리 제한 jevida(강성욱) 2016.09.30 1075
1817 매개변수 값의 변경과 SQL 서버 성능 저하 jevida(강성욱) 2016.09.30 1269
1816 IN 절 사용시 예기치 못한 액세스 위반과 SQL Server 종료 jevida(강성욱) 2016.09.30 1060
1815 SQL 버전과 CLR (.NET Framework 버전에 따른 오류) jevida(강성욱) 2016.09.30 1188
1814 SWITCHOFFSET 내장함수의 잘 못된 예측 - 미리 계산한 값을 쿼리에 연결하여 최적화 하기 jevida(강성욱) 2016.09.30 1311
1813 테이블 반환 매개변수 사용과 SQL 2012의 향상된 캐싱 기능 jevida(강성욱) 2016.09.30 1223
1812 디스크 섹터 크기와 데이터베이스 성능 jevida(강성욱) 2016.09.29 1635
1811 CLR 사용시 CPU 사용률 증가 현상 jevida(강성욱) 2016.09.29 1757





XE Login