none
MS-SQL DB서버의 디스크 구성에 대한 조언 부탁드립니다. RRS feed

  • 질문

  • 웹환경에서 서비스되는 시스템으로

    현재 5천만건 정도의 특정테이블에 대한 조회/추가/수정/삭제가

    빈번히 발생하며 데이터는 년간 2천만건정도씩 증가추세에 있습니다.

    소량의 데이터에 대한 트랜잭션은 실시간으로 처리하고 있으며

    대량데이터(500만건정도) 처리 및 중복데이터 제거 작업은 야간에 배치로 처리합니다.

    데이터의 증가에 따른 배치작업의 소요시간이 늘어나

    새로운 서버를 도입하여서 최적의 성능을 낼수있게 재구성 할려고 합니다.

    신규서버의 현재 구성은 아래와 같습니다.

    -----------------------------------------------------------------------

    디스크 1, 2 [RAID 1+0] -> Windows 2003 서버 (C 드라이브)

    디스크 3 ~ 12 [RAID 5 :디스크오류시 자동 리커버용 예비디스크1개 포함]

    -> 운영시스템DB (D 드라이브)

       MS-SQL 설치 및 master, tempdb 등 시스템DB (E 드라이브)

    -----------------------------------------------------------------------

    위와 같이 가용디스크 전체를 RAID 5 로 묶어논 상태에서

    대량데이터, 소량데이터, 인덱스, 트랜잭션로그 등으로

    filegroup을 여러개로 구분하여(또는 파일그룹에 몇개의 파일을 추가해서

    datafile을 여러개로 구분하여) 구성하는게 디스크를 읽고쓰는데 있어

    병렬처리에 의한 성능향상에 도움이 될까요?

    기존의 운영DB 를 신규서버의 (D 드라이브)에 복사해서 추가/삭제에 대한

    테스트를 해보니 기대만큼 좋은 결과는 아닌거 같네요..

    오히려 가용한 10개의 디스크를 5개의 [RAID 1+0] 로 잡고 파일그룹을 적절히 구분해서 처리하는게 낫지않을까 하는 생각도 해보는데요.. (참고자료에서도 그렇게 권하는거 같고요)

    대량데이터의 트랜젝션 처리에 경험 많으신 님들의 조언 기다립니다..

     

    2007년 4월 20일 금요일 오전 4:47

모든 응답

  • 10개의 디스크를 5개의 raid1+0으로 생성하여 파일그룹을 구분해서 처리하는게 성능상 훨 낫습니다.

    raid는 아시겠지만 write시에는 parity 계산으로 인한 지체가 있습니다.

    또한, 디스크에서 I/O 채널을 적절히 분할하고 LUN할당을 적절히 해줄경우 훨씬 많은 성능향상이 보여집니다.

    3~12를 하나의 RAID로 잡게 되면 I/O 채널 분할작업이 불가능하지 않을까 생각됩니다.

    대형 외장 스토리지를 사용하는 경우(DMX급, Tagmastore급) 디스크의 경우에는 디스크 구성에 여러가지 유연성이 있으니, 디스크 벤더에게 정확한 요구사항을 알려주고 컨설팅 받기를 권장합니다.

     

     

    2007년 4월 23일 월요일 오전 6:23