SQL Server 2008R2를위한 최적의 드라이브 구성


19

다음 설정을 가진 SQL Server 2008 R2를 실행하는 상당히 바쁜 데이터베이스 서버가 있습니다.

  • SATA RAID 1 (2 Drives)-OS / 프로그램
  • SAS RAID 10 (4 개 드라이브)-SQL 데이터베이스 파일 (데이터 및 로그)
  • SAS RAID 1 (2 개 드라이브)-TempDB (데이터 및 로그)

이 서버에 추가 드라이브를 추가 할 수 없다고 가정하고 사용 가능한 구성을 최대한 활용 했습니까? 또는 예를 들어 로그가 데이터 파일과 분리되는 다른 체계를 고려해야합니까?

최신 정보:

추가 하드웨어 세부 정보를 요청한 경우 :

  • SATA 드라이브 (OS / 프로그램 파티션에 사용)는 다음과 같습니다. WD 7200 RPM 3Gb / s 3.5 인치 SATA
  • 다른 어레이에 사용 된 SAS 드라이브는 다음과 같습니다. Seagate 15K RPM 6Gb / s 3.5 인치 SAS
  • 사용되는 RAID 컨트롤러는 다음과 같습니다. LSI 9260-8i SAS / SATA 6 Gb 8 포트

업데이트 2 :

내가받은 피드백을 바탕으로 선택할 수있는 다음과 같은 실행 가능한 옵션이있는 같습니다. 내가 설명한 환경에서 어떤 것이 가장 좋을지 말해 줄 수있는 사람에게 현상금을 수여합니다 .

  1. 모든 것을 그대로 두십시오-아마 나아지지 않을 것입니다
  2. 2 개의 SAS RAID 1 드라이브를 기존 RAID 10 어레이로 이동하여 총 6 개의 디스크로 구성하십시오.
  3. 로그 파일을 SAS RAID 1로 이동하거나 TempDB (데이터 또는 로그)를 RAID 10으로 다시 이동

두 번째 업데이트는 원래 질문과 정확히 동일한 질문을하므로 원래 답변이 적용됩니다. "... 내가 설명한 환경에서 최고 일 것입니다." .
Mark Storey-Smith

고성능 NVMe 및 기타 SSD 디스크가 시장에 출시되면 RAID는 더 이상 SQL Server 디스크 구성 모범 사례 관점 에서 중요하지 않습니다 . 디스크 풀 (스토리지 공간)은 앞으로 나아가는 길입니다. 그러나 디스크 관련 성능 문제를보다 잘 해결하려면 볼륨을 논리적으로 분리해야합니다.
IT의 얼굴

답변:


14

이 질문의 변형은 반 정기적으로 나타납니다.

또한 데이터 / 로그 분리 "모범 사례"에 대한 롤빵 싸움도 있습니다.

이 서버가 수행하는 작업에 대한 자세한 분석이 없으면 이전에 제공된 것과 동일한 조언이 적용됩니다.

  • OS 용 RAID 1
  • 데이터 / 로그 / tempdb 용 RAID 10 (6 디스크)

사용 가능한 스핀들 수가 거의없는 분할 지점은 거의 없습니다. 더 큰 IOP 용량을 가진 단일 어레이는 일반적으로 2 개의 작은 어레이보다 워크로드의 덩어리와 충돌을 더 잘 흡수합니다.

테스트 할 가치가있는 변형 중 하나는 tempdb를 OS 드라이브에 배치하는 것입니다. 구성을 공정하게 비교하기 위해 반복적으로 재생할 수있는 대표적인 워크로드가있는 경우에만 수행하십시오. 프로덕션 환경에서이 배열을 수행하려면 tempdb 증가가 제한되어 OS 드라이브의 모든 여유 공간을 실수로 소비하지 않도록하십시오.

OS 드라이브가 7200RPM 컵 받침이기 때문에 OS 드라이브 구성의 tempdb에 이점이 있다면 놀랄 것입니다.


7

모두 워크로드에 따라 다르지만 6 개의 드라이브 만 있으면 옵션이 제한됩니다. 정렬, 해시 테이블 및 스냅 샷 격리와 같은 작업에 대한 작업 부하가 tempdb에 크게 의존하지 않는 경우 RAID 10에서 6 개의 SAS 드라이브를 함께 사용하는 것이 좋습니다. tempdb는 많이 사용되므로 그대로 유지해야합니다.


대답에 감사드립니다. 범위의 구성을 변경하는 것은 (아쉽게도)이 서버가 프로덕션 상태이므로 옵션이 아닙니다. tempdb를 다시 RAID 10으로 전환하고 모든 로그 파일을 RAID 1에 저장하는 것이 궁금합니다. 이것이 현명한 옵션입니까?
DanP

2
SQL Server는 커밋의 일부로 모든 트랜잭션을 실제로 로그에 기록해야하므로 구성 내에서 가능한 가장 빠른 쓰기 성능을 원합니다. RAID 10은 RAID 1보다 우수한 쓰기 성능을 제공하므로 로그를 더 빠른 볼륨으로 유지합니다.
Patrick Keisler

2

이는 "매우 바쁘다"는 의미에 따라 크게 달라집니다. 다른 워크로드 패턴 (무거운 쓰기, 대량 작업의 공통 여부, 동시 액세스 수준, 이름, 여러 변수 중 세 가지)은 주어진 스핀들 배열의 성능.

쓰기가 많은 상황에서 로그를 데이터와 분리하면 각 쓰기가 로그와 데이터 파일을 모두 업데이트하므로 상당한 차이가 생길 수 있으므로 두 파일 세트가 동일한 스핀들 세트에 있으면 상당한 양의 헤드 플립이 필요합니다. .

워크로드 (및 해당 드라이브와 드라이브와 컴퓨터 사이에있는 컨트롤러의 사양)에 대한 추가 참조없이 세 가지 볼륨, 즉 OS + 프로그램 및 tempdb (데이터), 주 DB 용으로 3 가지 볼륨으로 이동하는 경향이 있습니다. 데이터, 세 번째 로그 (tempdb 및 기본 DB 모두)

물론 쓰기 작업에 대한 워크로드가 모두 매우 적은 경우 데이터와 로그를 별도로 유지하는 데 너무 많은 시간을 소비하지 않아야합니다. 성능 차이가 거의없고 전체 볼륨을 할당하는 데 많은 시간이 소요될 수 있기 때문입니다. 우주.


필자는 환경을 "무거운 쓰기"환경으로 묘사 할 것입니다. 월요일에 더 자세한 하드웨어 사양으로 내 질문을 업데이트 할 것입니다.
DanP

OP에있는 드라이브 수에 대한 아이디어가 있습니까? 로그 파일에 대해 Raid 1에 대해 더 많이 생각하고 있습니다. 이것은 쓰기 목적을위한 훌륭한 옵션 인 것 같지 않으며 AFAIK 로그 파일은 읽기 제한이 아니라 쓰기입니다.
Marian

기계의 하드웨어에 대한 추가 사양을 추가했습니다.
DanP

1
이 오해는 많은 데이터 / 로그 분리 저장소의 근본이 될 수 있으므로 사과드립니다. "... 각 쓰기 작업은 로그와 데이터 파일을 모두 업데이트하는 것과 관련이 있습니다"-아니요, 그렇지 않습니다. 데이터 페이지에 대한 쓰기는 모든 수정이 아닌 검사 점에서 발생합니다.
Mark Storey-Smith

1
@DavidSpillett 사실, 분할이 유리한 경우가 항상 있습니다. 핵심은 구성이 해당 특정 워크로드에 유리한지 테스트하고 검증 한 것입니다.
Mark Storey-Smith

2

실제 답변은 요구 사항에 따라 다르지만 일반적으로 "데이터를 입력하고 다른 배열에 로그온"하는 것이 "자신의 배열에 tempdb를 넣는 것"보다 중요합니다.

사용 가능한 드라이브 수를 고려할 때 나의 시작점은 다음과 같습니다.

  1. 두 개의 드라이브, RAID 1-운영 체제, 실행 파일, 페이지 파일.
  2. 4 개의 드라이브, RAID 5-모든 데이터 파일 (또는 RAID 1 + 0)
  3. 두 개의 드라이브, RAID 1-모든 로그 파일

해야 할 일은 SQLIO 를 사용 하여 다른 드라이브 구성의 성능을 테스트하는 것입니다.


이것은 내가 읽은 조언의 "다른 쪽"을 분명히 나타냅니다. 프로덕션 환경에서 "시도하지 않고"어떤 옵션이 더 나은지 결정하는 결정적인 방법이 있었으면합니다.
DanP

2
@ DanP 글쎄, 개인적으로 Mark의 조언을 따르고 나머지 드라이브 (OS 제외)와 함께 RAID10을 선택했습니다. 내가 생각하는 한, 로그 파일은 쓰기 집약적이며 RAID 1이 제공하는 것보다 더 나은 성능이 필요합니다. 그러나 저는 하드웨어 전문가가 아닙니다. 그냥 내 2 센트.
Marian

2
필자의 의견은 과거 (종종) 더 나은 서버로 마이그레이션하지 못했지만 성능이 더 나빠진 경험에서 비롯된 것입니다. 우리는이 새로운 서버에서 실제 부하를 테스트 한 적이 없었으며, 기회가 없었으며 서버가 정시에 준비되지 않았습니다. 프로덕션으로 마이그레이션하기 전에 반드시 서버 테스트를 수행해야합니다. 강조해서 죄송합니다. 따라서 모든 마이그레이션 / 업그레이드에 대한 나의 진언은 TEST, TEST, TEST, ...
Marian

1
RAID 5 또는 SQLIOSIM으로 시작할지 확실하지 않습니다 ... 전자가 스스로 말한대로 나중에 봅시다. SQLIOSIM은 정확성 및 스트레스 테스트 도구 이며 성능 또는로드 테스트 도구가 아닙니다. 워크로드 -Z의 config-X와 config-Y의 성능을 비교할 수있는 곳은 없습니다. SQLIOSIM 실행에서 config-X가 config-Y에 대해 얼마나 잘 수행되는지 알 수 있습니다. workload-Z의 성능을 비교하려면 workload-Z를 테스트하십시오.
Mark Storey-Smith

1
@GreenstoneWalker "RAID1은 RAID1 + 0보다 쓰기 속도가 빠릅니다."는 말이되지 않습니다. 이 아이디어는 어디에서 왔습니까?
Mark Storey-Smith

-1

(OLTP와웨어 하우징)에 DB를 사용하는 것에 따라 구성이 일반적인 일반 구성처럼 보입니다. 더 많은 디스크가 있다면 더 많은 옵션이 있습니다.

TempDB의 디스크를 RAID 0 (스트라이프)으로 전환하면 성능이 향상 될 수 있습니다. 실패 위험이 증가하지만 TempDB는 데이터 만 버퍼링하므로 데이터 손실이 발생하지 않습니다. 따라서 대부분의 사람들은 합리적인 절충을 고려합니다. 여분의 여유를 두십시오 (또는 핫 스페어).

언급하지 않았지만 시도해 볼 수있는 한 가지 방법 (아직하지 않은 경우) : TempDB를 여러 파일 (CPU 당 하나씩)로 분할하는 것이 좋습니다. 물론 별도의 디스크에있는 것이 가장 좋지만 단순히 별도의 파일이 있으면 도움이됩니다. http://msdn.microsoft.com/en-us/library/ms175527(v=SQL.105).aspx


4
Tempdb는 많은 용도로 사용되지만이 데이터베이스를 폐기 데이터베이스로 취급하지 않고 RAID 0에 배치하지 마십시오. RAID 0 볼륨이 실패하면 SQL Server를 시작할 수 없습니다.
Patrick Keisler

실제로 제안한대로 코어 당 하나의 임시 데이터베이스를 만들었지 만 그 점을 높이
셔서

1
이러한 제안은별로 좋지 않으며 모든 환경에 적합하지 않습니다. 첫 번째는 @PatrickKeisler가 앞서 언급했습니다. 두 번째는 폴 랜달 (Paul Randal)이 몇 시간 전에 논쟁 한 신화입니다. 이 기사는 다음과 같습니다. 매일 SQL Server DBA 신화 : (12/30) tempdb는 항상 프로세서 코어 당 하나의 데이터 파일을 가져야합니다 . 따라서 MS 문서는 잘못 될 수 있으므로 마음에 들지 마십시오.
Marian

2
"TempDB는 데이터를 버퍼링하기 때문에 데이터 손실을 경험할 수 없습니다."그리고 시스템 사용자는 X 시간의 다운 타임 동안 고통을 겪는다는 것을 알게 될 것입니다. 교체 디스크 또는 b) DBA는 자신의 휴대 전화에서 tempdb를 이동하는 방법을 헬프 데스크에 설명하려고 시도합니다.
Mark Storey-Smith 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.