SQL Server의 디스크 / 파티션을 설정하는 가장 좋은 방법에 대한 조언을 찾고 있습니다. 내 주요 관심사 중 일부는 다음과 같습니다.
SQL 파일을 어떻게 분리해야합니까 (데이터 파일, 로그, 임시)?
많은 HDD를 RAID하고 공간을 분할하거나 각 RAID에 대해 더 적은 수의 디스크로 여러 개의 RAID를 만드는 것이 더 낫습니까?
데이터와 로그 파일이 다른 RAID 유형이어야합니까?
기본 데이터베이스 (master, msdb 등)가 C :에 있어야합니까 아니면 다른 데이터 / 로그 파일과 같은 곳에 있어야합니까?
답변
다음은 멋진 블로그 게시물입니다. http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html
디스크 정렬에 대한 백서 : http://msdn.microsoft.com/en-us/library/dd758814.aspx
요컨대, OS는 RAID 1에 있어야하고, 데이터 파일은 RAID 10에 있고, 로그 파일은 RAID 1에 있어야합니다.
SQL 성능 기사 : http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx
10 가지 최고의 성능 팁에 대한 PDF : http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf
또한 성능상의 이유로 TEMPDB를 별도의 디스크에 두어야합니다. 폴 랜달이 여기에 와서 왜 조금이라도 당신의 마음을 날려 버릴 것입니다.
MS는 tempdb에 대한 이유를 다음과 같이 말합니다 : http://msdn.microsoft.com/en-us/library/ms175527.aspx
답변
이것은 큰 ‘의존’질문이다.
스토리지 전문가가 아니기 때문에 개별 RAID 어레이 질문을 만드는 방법에 대해서는 답변을 드릴 수 없지만 나머지는 도와 드릴 수 있습니다.
가장 먼저 고려해야 할 것은 다양한 데이터베이스의 워크로드 (OLTP (읽기 / 쓰기) 또는 DSS / DW (읽기))입니다. 읽기 / 쓰기 워크로드의 경우 중복성과 뛰어난 읽기 / 쓰기 성능을 제공하는 RAID 1 또는 RAID 10 (RAID 1 + 0)을보고 있어야합니다. 대부분의 읽기 작업량의 경우 RAID 5를 사용할 수 있습니다. RAID 5를 읽기 / 쓰기 작업량에 사용해서는 안되는 이유는 쓰기시 성능 저하를 초래하기 때문입니다.
트랜잭션 로그는 본질적으로 읽기 / 쓰기 (또는 주로 쓰기 로그 나 복제 등의 용도로 트랜잭션 로그를 사용하는지 여부에 따라 쓰기)에 따라 RAID 5에 배치해서는 안됩니다.
이는 일부 데이터베이스 및 워크로드의 경우 RAID 5에 데이터 파일이 있고 RAID 1/10에 로그 파일이있을 수 있고 다른 데이터베이스의 경우 RAID 1/10에 모든 것이있을 수 있음을 의미합니다. 더 나아가, 파티션 된 데이터베이스가있는 경우, 대부분 같은 읽기 테이블과 일부 읽기 / 쓰기 데이터를 포함 할 수 있습니다. 이것은 별도의 파일 그룹으로 분할 된 다음 각 파일 그룹이 적절한 RAID 레벨에 놓일 수 있습니다.
실제 데이터베이스의 분리는 워크로드 및 기본 IO 서브 시스템의 기능에 따라 달라집니다. 예를 들어 SAN보다 개별 RAID 어레이에 물건을 저장하려면 더 높은 수준의 분리가 필요할 수 있습니다.
Tempdb는 일반적으로로드 량이 많은 데이터베이스이므로 다른 데이터베이스와 별도로 저장해야하기 때문에 자체적으로 특수한 경우입니다. 시스템 데이터베이스는 많이 사용되어서는 안되며 중복성이있는 한 어느 곳에 나 배치 할 수 있습니다.
다음은 도움이 될 백서에 대한 링크입니다. Physical Database Storage Design . 또한 IO 하위 시스템이 예상 작업 부하를 처리 할 수 있는지 확인하십시오 (이 백서 : 배포 전 I / O 모범 사례 참조) . 마지막으로 올바른 RAID 스트라이프 크기 (보통 최신 시스템에서는 64K 이상), 올바른 NTFS 할당 단위 크기 (보통 64K) 및 Windows Server 2008 이전 시스템에서는 디스크 파티션 오프셋을 올바르게 설정해야합니다. . 이에 대한 정보와 이에 대한 자세한 정보 및 이러한 방법으로 구성해야하는 이유는 다음 블로그 게시물을 참조 하십시오. 디스크 파티션 오프셋, RAID 스트라이프 크기 및 NTFS 할당 단위가 올바르게 설정되어 있습니까? .
Bototm 제품군 : 작업량과 IO 하위 시스템 기능을 파악한 다음 그에 따라 구현하십시오.
이것이 도움이되기를 바랍니다.
추신 : tempdb에 관해서는 구성 방법에 대한 웜이 많으며 모든 종류의 상충되는 정보가 있습니다. 나는 TF 1118 주위의 오해 에서 tempdb 데이터 파일 구성에 대한 포괄적 인 블로그 게시물을 작성했습니다 .
답변
내가 설정 한 서버에 대한 짧은 대답은 항상
별도의 물리 디스크에 기록, RAID 1 또는 10 (스트라이핑 + 미러링)
성능 요구에 따라 일반적으로 RAID5의 자체 디스크에있는 데이터베이스
RAID 컨트롤러에 많은 캐시
OS와 Windows Pagefile을 별도의 어레이에 다시 붙이는 것이 좋습니다 (일반적으로 미러 1). 이렇게하면 모든 쓰기 작업이 분리되어 성능이 높아도 모든 것이 다운되지 않습니다.
내가 과거에 경험 한 것은 데이터베이스 쓰기 + 로그 쓰기 + 페이지 파일 쓰기가 Raid5 배열을 멈출 것이고 성능은 손 바구니에 빠질 것입니다. 문제는 테스트, 개발 등에서 성능이 우수하다는 것입니다. 그러나 생산 및 사용 급증에 이르면이 문제는 “파란색”으로 표시되고 사용자 불만이 급증합니다.
답변
나보다 훨씬 더 나은 MSSQL 녀석이 있지만 일반적으로 다음과 같이 제안합니다.
C의 OS 및 코드 :-로컬 디스크 여야하며 RAID1 어레이 쌍이어야합니다.이를 위해 2 개의 2.5 인치 SAS 146GB 10krpm 디스크를 사용하지만 2 개의 SATA 7.2 디스크를 사용할 수 있습니다. 데이터는 원하는 크기의 매우 빠른 (10krpm 이상) RAID 1/10, 5/50/6/60 어레이에 있어야합니다. FC SAN LUN, 일반적으로 ‘tier 2’/ 10krpm 디스크 그룹에 데이터를 보관합니다. . 로그는 별도의 VERY FAST (15krpm) 소형 (10GB 이하?) RAID 1 어레이 쌍에 있어야합니다. FC SAN LUN, 보통 매우 작은 ‘tier1’/ 15krpm 디스크 그룹 또는 ‘tier0’/ ssd 그룹.
어느 쪽이든 성능을 위해 별도의 스핀들 / 배열에서 각 덩어리를 원합니다. 물론 단일 디스크에서 모두 작동하지만 성능과 비용의 균형을 찾고 있다고 생각합니다.
마스터 / tempdb를 일반 데이터베이스와 함께 저장하지만 별도의 데이터 어레이 LUN으로 분리 할 수 있습니다.
도움이 되었기를 바랍니다.