최고의 성능을 위한 MS SQL 레이아웃

최고의 성능을 위한 MS SQL 레이아웃

우리는 MS SQL 백엔드 역할을 할 새 서버를 구입했습니다. 최적의 설정이 무엇인지 궁금합니다.

서버는 Dell R710이며 6개의 하드 드라이브(2x 74GB 15k 및 4x 146GB 15k)가 있습니다.

이는 현재 RAID 1/Raid10 구성으로 설정되어 있습니다.

내 질문은 다음이 어디로 가야 하는가입니다(어느 배열)?

TEMPDB(수, 크기 및 증가량) 시스템 DB(마스터, 모델 등) 애플리케이션 MDF 애플리케이션 LDF 시스템 페이지 파일

RAID1에는 OS가 이미 설치되어 있습니다.

답변1

저는 OS, 페이징 파일, LDF를 RAID1 어레이에 배치했습니다. RAID10 어레이의 다른 모든 것.

Windows 2008을 사용하지 않는 경우 파티션이 올바르게 정렬되어 있는지 확인하세요.

http://msdn.microsoft.com/en-us/library/dd758814.aspx

이미 설명한 대로 CPU 코어당 1개의 TEMPDB 파일을 추가하고 모두 동일한 크기로 만듭니다.

로그 파일의 크기를 적절하게 조정하고 한 단계로 생성하세요.

가능하다면 네트워크 공유를 통해 데이터베이스를 다른 서버에 백업하는 것을 고려하십시오. 이는 어레이가 완전히 실패하여 데이터베이스와 백업을 함께 가져갈 위험을 완화하는 것입니다.

답변2

임시DB

나는 tempdb 최적화에 관해 얼마 전에 조사를 했고 내 스스로 대답했습니다.Stackoverflow에 대한 질문. 내가 알아낸 내용은 다음과 같습니다.

tempdb 성능을 최적화하려면 물리적 디스크 구성, 파일 구성 및 데이터베이스 내의 일부 설정에 주의를 기울이십시오.

물리적 디스크 구성

tempdb는 해당 위치에 있어야 합니다.자체 전용 물리 디스크. 이를 통해 SQL Server의 나머지 볼륨에서 I/O 트랜잭션을 분할할 수 있습니다.

tempdb를 새 디스크 드라이브로 이동하려면 ALTER DATABASE. 이 작업을 수행하는 것이 핵심 T-SQL 명령입니다. Microsoft는 SQL Server 2005 온라인 설명서에서 좋은 예를 제공합니다. 아티클 이름은 ALTER DATABASE(Transact-SQL)이고 특정 섹션은 다음과 같습니다.'G. tempdb를 새 위치로 이동합니다.'

tempdb는 쓰기 작업이 매우 많은 데이터베이스입니다. 따라서 RAID 5 어레이는 이에 적합한 장소가 아닙니다. tempdb를 넣어야지RAID 1 또는 RAID 10 어레이에서쓰기량이 많은 애플리케이션에 최적화되어 있기 때문입니다. tempdb의 각 물리적 데이터베이스 파일에 대해 추가 RAID 1 또는 RAID 10 배열을 감당할 수 있다면 성능이 향상됩니다.

데이터베이스 파일

당신은 가지고 있어야서버의 CPU 코어당 하나의 물리적 파일. 따라서 듀얼 칩, 듀얼 코어 서버가 있는 경우 tempdb 데이터베이스에 대한 4개의 물리적 데이터베이스 파일이 있어야 합니다. 더 많은 데이터베이스 파일을 추가할 때는 다음 위치에서 파일을 구성하는 것이 중요합니다.동일한 초기 크기 및 동일한 성장 설정. 이렇게 하면 SQL Server는 파일 전체에 최대한 균등하게 데이터를 기록합니다.

데이터베이스 파일 크기

tempdb 데이터베이스의 크기는 시스템 성능에 영향을 미칠 수 있습니다. 예를 들어 tempdb에 정의된 크기가 너무 작으면 시스템 처리 로드의 일부가SQL Server 인스턴스를 다시 시작할 때마다 워크로드를 지원하는 데 필요한 크기로 tempdb가 자동으로 증가합니다.. tempdb 데이터 및 로그 파일의 크기를 늘려 이러한 오버헤드를 방지할 수 있습니다.

프로덕션 환경에서 tempdb의 적절한 크기를 결정하는 것은 기존 작업 부하와 사용되는 SQL Server 기능을 비롯한 여러 요소에 따라 달라집니다. Microsoft에서는 SQL Server에서 다음 작업을 수행하여 기존 워크로드를 분석할 것을 권장합니다.시험환경:

  1. tempdb에 대해 자동 증가 설정(테스트 환경에서!).
  2. 개별 쿼리 또는 워크로드 추적 파일을 실행하고 tempdb 공간 사용을 모니터링합니다.
  3. 인덱스 재구축 및 tempdb 공간 모니터링과 같은 인덱스 유지 관리 작업을 실행합니다.
  4. 이전 단계의 공간 사용 값을 사용하여 총 워크로드 사용량을 예측합니다. 예상되는 동시 활동에 맞게 이 값을 조정한 다음 그에 따라 tempdb의 크기를 설정하십시오.

tempdb의 최소 크기 권장 사항은 다음과 같습니다.

  환경. 크기 DB 크기(MB) 로그 크기(MB)
  ----------- ------------ -----------
  소형 1024 256
  중간 5120 1024
  대형 10024 2048

데이터베이스 설정

다음을 통해 tempdb 성능을 더욱 향상시킬 수 있습니다.자동 업데이트 통계 비활성화, 그러면 tempdb의 일부 작업이 절약됩니다. 다음을 설정할 수도 있습니다.자동 통계 생성 옵션을 false로 설정.

면책조항: 설정은 주의해서 변경해야 합니다. tempdb에 가하는 로드 종류에 따라 설정을 변경하면 시스템 성능에 부정적인 영향을 미칠 수 있습니다.

최적의 tempdb 성능을 얻으려면 다음에 제공된 지침과 권장 사항을 따르십시오.tempdb 성능 최적화.

tempdb 사용량을 모니터링하는 방법은 무엇입니까?

달리기tempdb의 디스크 공간이 부족합니다.~할 수 있다심각한 혼란을 야기하다SQL Server 프로덕션 환경에서 실행 중인 응용 프로그램이 작업을 완료하지 못하게 할 수 있습니다.

동적 관리 보기를 사용하면 sys.dm_db_file_space_usagetempdb 파일에서 이러한 기능에 사용되는 디스크 공간을 모니터링할 수 있습니다. 또한 세션 또는 작업 수준에서 tempdb의 페이지 할당 또는 할당 취소 활동을 모니터링하려면 sys.dm_db_session_space_usagesys.dm_db_task_space_usage동적 관리 보기를 사용할 수 있습니다.

이러한 보기는 tempdb 디스크 공간을 많이 사용하는 대규모 쿼리, 임시 테이블 또는 테이블 변수를 식별하는 데 사용할 수 있습니다. tempdb에서 사용 가능한 여유 공간과 tempdb를 사용하는 리소스를 모니터링하는 데 사용할 수 있는 여러 카운터도 있습니다.

연결:

답변3

일반적인 대답은 높은 IO와 관련된 모든 항목은 RAID 10 디스크 그룹으로 이동해야 한다는 것입니다. 또한 파티션 전략이나 질문의 ​​해당 부분을 결정하셨나요?

따라서 첫 번째 디스크 그룹에서는 아마도 단일 파티션(약 70GB 사용 가능)을 생성하고 여기에 OS와 MSSQL 애플리케이션을 배치할 것입니다.

두 번째에는 다음과 같은 파티션을 생성합니다.

1) 페이지 파일용 파티션(보유한 메모리 양에 따라 다르지만 약 10-20GB 2) 트랜잭션 로그 파일용 파티션 100GB 3) 데이터 파일용 파티션 100GB

이렇게 하면 요구 사항이 변경됨에 따라 로그 파티션이나 데이터 파티션을 늘릴 수 있도록 할당하지 않은 채로 남겨둘 약 50GB의 여유 공간이 남게 됩니다.

흥미롭게도 저는 현재 Linux와 Oracle만 사용하는 동일한 사양의 컴퓨터에서 작업하고 있습니다. 평행 우주 출신이신가요?

제임스

답변4

죄송합니다. 등록되지 않은 사용자로 이 질문을 했기 때문에 지금은 답변으로 표시할 수 없습니다. 관리자가 내 계정을 질문에 다시 연결할 수 있는지 확인하기 위해 여기에서 다시 기다리고 있습니다.

더 많은 통찰력을 제공하기 위해 이 서버는 큰 부하를 받지 않으며 실제로는 소스 제어 백엔드입니다. 서버와 DAS 또는 ISCSI SAN 등을 구입하는 것은 너무 과한 일이었고 비용으로 인해 프로젝트 기회가 무너졌을 것입니다. 저는 직원이 100명 정도 되는 중소기업에 근무하고 있기 때문에 지금 당장은 IT 예산이 특히 부족합니다.

@mrdenny

우리는 이 구성을 추천한 소프트웨어 공급업체에 질문을 했습니다. 우리가 여기에서 요청한 퀘스트를 제안했을 때 그들은 로그, 데이터베이스 및 tempdb를 모두 raid 10 파티션에 넣으라고 말했습니다. 나는 큰 DB 전문가는 아니지만(정말??) 수상쩍게 들렸습니다. 거의 모든 사람들이 동일한 스핀들에 ldf와 mdf를 혼합하지 않는 것을 알고 있기 때문입니다.

@splattne - tempdb에 대한 통찰력에 감사드립니다. 이는 이번 설치와 향후 SQL 설치에 유용할 것입니다.

@SuperCoolMoss - 내 IT 친구 네트워크의 몇몇 사람들과 이야기를 나눴는데 그들은 이에 대해 당신의 의견에 동의했습니다. RAID1의 OS, 페이지 파일 및 LDF와 RAID10의 tempdb 및 MDF

댓글을 달아주신 다른 모든 분들께 감사드립니다.

제가 읽은 내용에 따르면 이는 디스크와 관련하여 SQL을 배포할 때 따라야 한다고 생각하는 기본 규칙입니다. 제 생각에는 이 순서대로 따라야 한다고 생각합니다. 동의하는지, 동의하지 않는지 알려주세요.

  1. 중복 디스크 사용(매우 명백함)
  2. 빠른 디스크 사용(가능한 경우 SCSI/SAS, 15k)
  3. ldf와 mdf 파일을 서로 다른 스핀들에 분리
  4. ldfs 또는 tempdb에 RAID5를 사용하지 마십시오(RAID10 또는 RAID1 사용).
  5. 가장 빠른 스핀들에 tempdb를 배치하십시오. 가능하다면 ldf 및 mdf 스핀들에서 tempdb를 분리하세요.

이 목록의 수정된 버전을 자유롭게 공유해 주세요.

관련 정보