64개를 초과하는 CPU가 있는 컴퓨터에서 SQL Server를 실행하는 최선의 방법

이 항목에서는 64개를 초과하는 CPU가 있는 컴퓨터에서 SQL Server 인스턴스를 실행하기 위한 최상의 방법에 대해 설명합니다.

하드웨어 스레드에 CPU 할당

affinity maskaffinity64 mask 서버 구성 옵션을 사용하여 특정 스레드에 프로세서를 바인딩하지 마십시오. 이러한 옵션은 64개 CPU로 제한되어 있습니다. 대신 ALTER SERVER CONFIGURATION (Transact-SQL)을 사용하십시오.

트랜잭션 로그 파일의 크기 관리

트랜잭션 로그 파일의 크기를 늘리기 위해 자동 증가에 의존하지 마십시오. 트랜잭션 로그를 늘리는 작업은 직렬 프로세스로 수행되어야 합니다. 로그를 확장하게 되면 로그 확장이 완료될 때까지 트랜잭션 쓰기 작업이 수행되지 않을 수 있습니다. 대신 해당 환경의 일반적인 작업량을 수용할 수 있는 값으로 파일 크기를 설정하여 로그 파일에 충분한 공간을 미리 할당합니다.

인덱스 작업에 대한 최대 병렬 처리 수준 설정

데이터베이스 복구 모델을 대량 로그 또는 단순 복구 모델로 임시로 설정하면 CPU가 많이 있는 컴퓨터에서 인덱스를 생성하거나 다시 작성하는 등의 인덱스 작업 성능이 개선될 수 있습니다. 이러한 인덱스 작업은 상당한 로그 작업을 생성하며 로그 경합은 SQL Server의 최적 병렬 처리 수준(DOP) 선택에 영향을 줄 수 있습니다.

또한 이러한 작업을 위해 최대 병렬 처리 수준(MAXDOP) 설정을 조절할 수 있습니다. 다음 지침은 내부 테스트를 기반으로 하였으며 일반적으로 권장되는 사항입니다. 다양한 MAXDOP 설정을 시행해 보면서 최적의 작업 환경을 설정합니다.

  • 전체 복구 모델의 경우 max degree of parallelism 옵션 값을 8 또는 그 이하로 제한합니다.

  • 대량 로그 모델 또는 단순 복구 모델의 경우 max degree of parallelism 옵션 값은 8 보다 커야 합니다.

  • NUMA가 구성된 서버에서는 최대 병렬 처리 수준이 각 NUMA 노드에 할당된 CPU 수를 초과하면 안 됩니다. 쿼리가 1 NUMA 노드에서 로컬 메모리를 자주 사용하기 때문이며 이것은 메모리 액세스 시간을 향상시킬 수 있습니다.

  • 하이퍼스레딩을 사용하고 2009년 또는 그 이전에 생산된 서버는 MAXDOP 값이 실제 프로세서 수를 초과하면 안 됩니다.

max degree of parallelism 옵션에 대한 자세한 내용은 병렬 처리 수준을 참조하십시오.

최대 작업자 스레드 수 설정

최대 작업자 스레드 수는 항상 최대 병렬 처리 수준에 대한 설정보다 높게 설정합니다. 작업자 스레드 수는 항상 서버에 있는 CPU 수의 7배 이상의 값으로 설정해야 합니다. 자세한 내용은 max worker threads 옵션을 참조하십시오.

SQL Trace 및 SQL Server Profiler 사용

프로덕션 환경에서는 SQL Trace와 SQL Server 프로파일러를 사용하지 않는 것이 좋습니다. CPU 수가 늘어날수록 이러한 도구의 실행으로 인한 오버헤드도 늘어납니다. 프로덕션 환경에서 SQL Trace를 사용해야 하는 경우 추적 이벤트의 수를 최소로 제한합니다. 부하를 고려하여 주의 깊게 각 추적 이벤트를 프로파일링 및 테스트해야 하며 성능에 많은 영향을 주는 이벤트를 조합해서 사용하지 마십시오.

tempdb 데이터 파일 개수 설정

일반적으로 tempdb 데이터 파일 수는 CPU 수와 일치해야 합니다. 하지만 tempdb에 대한 동시성 요구를 신중하게 고려하면 데이터베이스 관리 작업을 줄일 수 있습니다. 예를 들어 시스템에 64개의 CPU가 있고 일반적으로 32개의 쿼리에서만 tempdb를 사용하는 경우 tempdb 파일의 수를 64개로 늘려도 성능이 개선되지 않습니다. 자세한 내용은 tempdb 성능 최적화를 참조하십시오.

64개를 초과하는 CPU를 사용할 수 있는 SQL Server 구성 요소

다음 표에서는 SQL Server 구성 요소를 나열하며 이들 구성 요소가 64개를 초과하는 CPU를 사용할 수 있는지를 보여 줍니다.

프로세스 이름

실행 프로그램

64개를 초과하는 CPU 사용

SQL Server 데이터베이스 엔진

Sqlserver.exe

Reporting Services

Rs.exe

아니요

Analysis Services

As.exe

아니요

Integration Services

Is.exe

아니요

Service Broker

Sb.exe

아니요

전체 텍스트 검색

Fts.exe

아니요

SQL Server 에이전트

Sqlagent.exe

아니요

SQL Server Management Studio

Ssms.exe

아니요

SQL Server 설치 프로그램

Setup.exe

아니요