2012. 3. 20. 23:17
Brain Trainning/DataBase
I/O 특성을 잘 고려해서 시스템을 운영해야 합니다.
특성은 크게 다음과 같이 특성을 구분할 수 있습니다.
1. OLTP
- Random IO가 많고 단순하며 Transaction 들이 짧은(?) 것이 특징입니다.
- 디스크의 입장에서는 여기 저기 많은 곳을 돌아다니면서 데이터를 읽어와야 합니다.
2. OLAP/DSS
- Sequencial IO가 많고 Transaction 이 긴것(?) 이 특징입니다.
- 디스크의 입장에서는 Range에 대한 검색이 많아집니다.
위와 같은 구분 및 특징은 보편적인 것으로 대략적인 시스템의 구성에 대한 감을 잡을 수 있습니다.
그러나, 좀더 디테일하게 들어가면 다음과 같은 것들에 대한 파악이 운영에 필요합니다.
I/O 의 측정
1. 운영중인 시스템
- PhysicalDisk : Disk Reads/sec , PhysicalDisk : Disk Write/sec 카운터를 체크합니다.
- 드라이브의 위의 카운터를 확인해 현재 디스크의 I/O 를 확인할 수 있습니다.
- Physical Disk : Avg Disk Queue Length 를 확인해 보고 이 수가 2 이상일 경우 I/O 병목이 발생했다고 할 수 있습니다. 이때 참고해야할 것은 2라는 것은 스핀들 하나에 대한 값이라는 것입니다. 따라서 다수의 디스크를 사용하는 RAID에서는 2/(RAID에 포한된 디스크 수) 입니다.
- 만약 병목이 확인되면 Memory : Pages/sec 카운트를 확인해 봅니다. 이 카운트가 높으면 Memory 증설을 통해 I/O 부담을 줄일 수 있습니다.
디스크 병목이면
- 다른 물리적 드라이브로 파일 이 동
- 더 빠른 디스크로 변경
- RAID 에 디스크 추가
등의 조치가 필요합니다.
2. 신규시스템
필요 디스크의 수
Disk Transfers/sec (Disk Reads/sec + Disk Writes/sec)
- Disk Transfers/sec 으로 IOPs를 추산 이를 통해서 필요한 Disk의 수를 계산해줍니다.
- 공식 ) Required # Disks = (Reads/sec + (Writes/sec * RAID adjuster)) / Disk IOPS
Raid adjuster : RAID 0 : 1, RAID 1, 10 : 2, RAID 5 : 4 로 추산합니다.
따라서, 디스크 하나의 IOPS를 125 로 계산하고, 2000 Transfers/sec (Read 1200, Write 800) 인 시스템은 RAID 10 으로 묶을 경우 디스크가
- (1200 + 800 * 2 ) / 125 = 22.4 개의 디스크가 필요합니다.
결론적으로 만일 산정한 DB Size 가 얼마 되지 않는다면... 돈질이 되겠네요.. 사용하지 않는 공간이 많아질 가능성이 있습니다. 이때는 Fusion IO, SSD 등 고성능의 디스크 도입을 고려해볼만 합니다.
대역폭
2000 * 8KB = 16MB 입니다.
보통 FC의 대역폭을 6Gb로 보면 750MB 이므로 충분한 대역폭을 제공한다고 하겠습니다.
위와 같은 것들을 알고 이해하고 있어야 시스템의 I/O 병목을 예방 / 조치 할 수 있습니다.
'Brain Trainning > DataBase' 카테고리의 다른 글
[MSSQL] Database 파일 정보 조회 Script (0) | 2012.04.03 |
---|---|
[MSSQL] 대기상태 확인 쿼리 (0) | 2012.03.27 |
[DMV] 몇몇 알아야 하는 DMV (0) | 2012.03.14 |
[MSSQL] TDE Performance Comparison (펌) (0) | 2012.03.06 |
[MSSQL] TDE (Transparent Data Encryption) (0) | 2012.03.05 |