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

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

파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기

 

하드웨어에 대한 리뷰를 쓴다는 것은 매우 어려운 일이다. 특히 벤치마크 테스트를 통한 성능을 측정한다는 것은 개인이 하기엔 거의 불가능 하리라 생각한다.(그래서 대부분 벤더의 공식 문서를 참고한다.) 따라서 이 글은 어떤 공식적인 문서나 테스트 방법을 포함하고 있지 않으며 지극히 나의 주관적인 생각을 정리한 것임을 밝혀 둔다.

 

SQL Server에서 디스크는 가장 중요한 자원중의 하나이다. 특히 성능에 있어서 가장 영향을 많이 받는 부분이 디스크라 생각한다. (자원 중에 가장 느리다.) 우리는 여러 해 동안 서비스를 하면서 디스크에 대한 고민을 많이 해왔다.

SQL Server의 성을 최대화 화기 위해 드라이브의 파티션 오프셋은 어떻게 설정 하면 좋을까? 또 시스템 파티션 오프셋이 어떻게 설정되어 있을까? 이번 시간을 통해 알아 보자.

 

MS SQL Server에서는 데이터를 저장하는 최소 단위는 Page이며 8개의 Page가 1개의 Extent를 구성한다. Page 의 크기는 8K 이며 Extent의 크기는 8*8Page = 64K 이다. 여기서 IO의 최소 입출력 단위는 Extent이므로 64K가 된다.

 

그렇다면 SQL Server를 사용하는 모든 디스크의 오프셋 값을 64K로 맞추면 되는가? 정답은 없다. 시스템의 특성 (OLTP, OLAP)에 따라 다르며 하드웨어의 구성과 벤더에 따라 다양한 조합이 가능하기 때문이다.

디스크 파티션 및 정렬에 관한 내용은 마이크로소프트의 공식문서를 참고 하길 바란다.

 

Windows 2003 disk Partition tool : http://support.microsoft.com/kb/923076/en-us?wa=wsignin1.0

 

할당 단위 크기에 대해서 알아 보자, 할당 단위 크기는 FORMAT 명령에 의해 설정 되며 클러스터 사이즈이다. Windows는 512byte, 1024byte, 2048byte, 4096byte 8192byte 16K, 32K, 64L를 지원한다. FORMAT시 특별한 설정을 하지 않으면 기본 4096byte로 클러스터가 할당 된다.

[fsutil] 명령어를 사용하여 할당 단위 크기를 확인 해 보자.

 

커맨드 창에서 [fsutil] 명령어를 입력하면 명령어 옵션이 나타난다. 여기에서 필요한 명령어를 조합하여 사용 하면 된다.

 

 

다음과 같이 [fsutil fsinfo ntfsinfo d:]를 입력하여 [D:\]드라이브의 디스크 할당 단위를 확인 하자.

현재 클러스터는 4096으로 할당 되어 있다. (Windows 7, 기본 포맷)

 

 

디스크 오프셋을 확인해 보자, 우리가 잘 알고 있는 [diskpart] 명령어를 사용한다. 현재 [D:\]의 오프셋을 보면 1024K로 설정되어 있는 것을 확인 할 수 있다. Windows Vista이상 , Windows Server 2008이상은 기본 오프셋이 1024로 되어 있다고 한다.

 

 

파티션 오프셋에 대한 정확한 정보는 [wmic] 명령어를 사용하여 확인 할 수 있다. 디스크 번호와 파티션 번호를 주의하여 확인 해야 한다.

 

 

SQL Server를 운영하는데 있어서 파티션 및 오프셋 그리고 파티션 정렬은 디스크의 성능에 큰 영향을 행사하므로 나의 시스템과 디스크 옵션을 통하여 최적의 성능이 나올 수 있도록 고민해 보자.

 

참고로 파티션 오프셋 및 할당 단위 크기는 포맷 할 때 정할 수 있으므로 다운 타임을 피할 수 없다. 신규 서버 추가 도입에 사용하면 좋을 듯 하다.

[시나리오]

  1. 데이터 백업
  2. 드라이브 삭제
  3. 파티션 정렬
  4. 파티션 포맷
  5. 백업 데이터 복원


강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1690 SQL Server 성능 대시보드 jevida(강성욱) 2016.09.13 2210
1689 SSMS를 이용한 데이터베이스 복사 하기 jevida(강성욱) 2016.09.13 11362
1688 SQL Server에서 DB2 링크드 서버 연결 방법 jevida(강성욱) 2016.09.13 3267
1687 SQL Server 인덱스 활성 / 비활성 하기 jevida(강성욱) 2016.09.13 2341
» 파티션 오프셋과 SQL Server에 대한 디스크 할당 단위 크기 jevida(강성욱) 2016.09.13 1679
1685 Read the End of a Large Error Log (에러로그 끝 부분 읽기) jevida(강성욱) 2016.09.13 1299
1684 데이터베이스 여유공간 확인 jevida(강성욱) 2016.09.13 1445
1683 FILE GROUP 간 데이터 이동 jevida(강성욱) 2016.09.13 1601
1682 문서화 되지 않은 sys.fn_PhysLocFormatter 함수 jevida(강성욱) 2016.09.13 946
1681 SQL Server 관리자 전용 연결(DAC) jevida(강성욱) 2016.09.13 3361
1680 파일 접근 권한으로 인한 DB복원 실패 작업 해결하기 jevida(강성욱) 2016.09.13 1919
1679 DBCC CHECKDB 실행과 히스토리 관리 jevida(강성욱) 2016.09.13 1840
1678 MDF를 이용한 데이터베이스 복원 jevida(강성욱) 2016.09.13 1174
1677 EventID 3041 Error jevida(강성욱) 2016.09.13 1408
1676 데이터베이스 미러 백업 jevida(강성욱) 2016.09.13 1312
1675 SNAPSHOT을 이용한 SQL Server 복원 jevida(강성욱) 2016.09.13 2290
1674 복사 전용 백업(COPY ONLY BACKUP) jevida(강성욱) 2016.09.13 3336
1673 SQL Server 기본 백업 폴더 변경하기 jevida(강성욱) 2016.09.13 4041
1672 sp_helpindex 의 향상된 버전 minsouk 2016.05.17 4560
1671 Spatial Index (공간 인덱스) 생성, 수정, 삭제 jevida(강성욱) 2016.01.11 9236





XE Login