Skip to main content
Enterprise applications
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

Microsoft SQL Server CPU 구성

기여자

시스템 성능을 향상시키려면 실행에 적절한 수의 프로세서를 사용하도록 SQL Server 설정 및 서버 구성을 수정해야 합니다.

하이퍼스레딩

하이퍼스레딩은 인텔의 독점 SMT(동시 멀티스레딩) 구현으로 x86 마이크로프로세서에서 수행되는 계산(멀티태스킹)의 병렬화를 개선합니다.

하이퍼스레딩을 사용하는 하드웨어에서는 논리적 하이퍼스레드 CPU가 운영 체제에 물리적 CPU로 나타날 수 있습니다. 그러면 SQL Server는 운영 체제가 제공하는 물리적 CPU를 보고 하이퍼스레드 프로세서를 사용할 수 있습니다. 이렇게 하면 병렬화를 늘려 성능을 향상시킬 수 있습니다.

여기서 주의해야 할 점은 각 SQL Server 버전에는 사용할 수 있는 컴퓨팅 성능에 대한 제한이 있다는 것입니다. 자세한 내용은 SQL Server Edition별 계산 용량 제한 을 참조하십시오.

SQL Server 라이선스에는 두 가지 옵션이 있습니다. 첫 번째는 서버 + 클라이언트 액세스 라이센스(CAL) 모델이며 두 번째는 프로세서당 코어 모델입니다. 서버 + CAL 전략을 통해 SQL Server에서 사용할 수 있는 모든 제품 기능에 액세스할 수 있지만 소켓당 20개의 CPU 코어로 하드웨어 제한이 있습니다. 소켓당 20개가 넘는 CPU 코어가 있는 서버에 대해 SQL Server Enterprise Edition + CAL을 사용하는 경우에도 응용 프로그램은 해당 인스턴스에서 이러한 모든 코어를 한 번에 사용할 수 없습니다.

아래 그림은 시작 후 코어 제한 적용을 나타내는 SQL Server 로그 메시지를 보여 줍니다.

로그 항목은 SQL Server 시작 후 사용 중인 코어 수를 나타냅니다.

오류: 그래픽 이미지가 없습니다

따라서 모든 CPU를 사용하려면 프로세서당 코어 라이센스를 사용해야 합니다. SQL Server 라이센스에 대한 자세한 내용은 을 참조하십시오 "SQL Server 2022: 최신 데이터 플랫폼".

CPU 선호도

성능 문제가 발생하지 않는 한 프로세서 선호도 기본값을 변경할 필요는 없습니다. 그러나 성능 문제가 무엇이고 어떻게 작동하는지 이해하는 것이 좋습니다.

SQL Server는 다음 두 가지 옵션을 통해 프로세서 선호도를 지원합니다.

  • CPU 선호도 마스크

  • 선호도 I/O 마스크

SQL Server는 운영 체제에서 사용할 수 있는 모든 CPU를 사용합니다(프로세서당 코어 라이센스를 선택한 경우). 모든 CPU에 스케줄러를 생성하여 지정된 워크로드에 대한 리소스를 최대한 활용할 수 있습니다. 멀티태스킹 시 서버의 운영 체제 또는 다른 응용 프로그램은 프로세스 스레드를 하나의 프로세서에서 다른 프로세서로 전환할 수 있습니다. SQL Server는 리소스를 많이 사용하는 응용 프로그램이므로 이 경우 성능에 영향을 줄 수 있습니다. 영향을 최소화하기 위해 모든 SQL Server 로드가 미리 선택된 프로세서 그룹으로 전달되도록 프로세서를 구성할 수 있습니다. 이는 CPU 선호도 마스크를 사용하여 수행할 수 있습니다.

선호도 입출력 마스크 옵션은 SQL Server 디스크 입출력을 CPU의 하위 집합에 바인딩합니다. SQL Server OLTP 환경에서는 이 확장을 통해 입출력 작업을 실행하는 SQL Server 스레드의 성능을 향상시킬 수 있습니다.

최대 평행 거리(MAXDOP)

기본적으로 SQL Server는 프로세서별 코어 라이센스를 선택한 경우 쿼리 실행 중에 사용 가능한 모든 CPU를 사용합니다.

이 방법은 대규모 쿼리에 유용하지만 성능 문제가 발생하고 동시성이 제한될 수 있습니다. 더 좋은 방법은 병렬 처리를 단일 CPU 소켓의 물리적 코어 수로 제한하는 것입니다. 예를 들어, 하이퍼스레딩에 관계없이 소켓당 12개의 코어가 있는 물리적 CPU 소켓 2개가 있는 서버에서 MAXDOP를 12로 설정해야 합니다. MAXDOP는 사용할 CPU를 제한하거나 지정할 수 없습니다. 대신 단일 배치 쿼리에서 사용할 수 있는 CPU 수를 제한합니다.

팁 * NetApp는 데이터 웨어하우스와 같은 DSS에 대해 MAXDOP 50부터 시작하여 필요한 경우 조정 기능을 위 또는 아래로 탐색할 것을 권장합니다. 변경할 때 응용 프로그램에서 중요한 쿼리를 측정해야 합니다.

최대 작업자 스레드 수

최대 작업자 스레드 옵션을 사용하면 많은 수의 클라이언트가 SQL Server에 연결될 때 성능을 최적화할 수 있습니다.

일반적으로 각 쿼리 요청에 대해 별도의 운영 체제 스레드가 만들어집니다. SQL Server에 수백 개의 동시 연결이 이루어지면 쿼리 요청당 하나의 스레드가 많은 양의 시스템 리소스를 소비합니다. 최대 작업자 스레드 옵션을 사용하면 SQL Server에서 작업자 스레드 풀을 만들어 더 많은 수의 쿼리 요청을 처리할 수 있으므로 성능이 향상됩니다.

기본값은 0입니다. 이 값을 사용하면 SQL Server가 시작 시 작업자 스레드 수를 자동으로 구성할 수 있습니다. 이는 대부분의 시스템에서 작동합니다. Max worker 스레드는 고급 옵션이므로 숙련된 데이터베이스 관리자(DBA)의 도움 없이 변경할 수 없습니다.

작업자 스레드를 더 많이 사용하도록 SQL Server를 구성해야 하는 경우는 언제입니까? 각 스케줄러의 평균 작업 대기열 길이가 1을 초과하면 시스템에 더 많은 스레드를 추가할 수 있습니다. 단, 로드가 CPU에 바인딩되지 않거나 다른 과중한 대기가 발생하는 경우에만 가능합니다. 이러한 상황이 발생하는 경우 스레드를 더 추가해도 다른 시스템 병목 현상이 발생하기 때문에 도움이 되지 않습니다. 최대 작업자 스레드에 대한 자세한 내용은 을 참조하십시오 "최대 작업자 스레드 서버 구성 옵션을 구성합니다".

오류: 그래픽 이미지가 없습니다

SQL Server Management Studio를 사용하여 최대 작업자 스레드 구성

The following example shows how to configure the max work threads option using T-SQL.

EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE ;
GO
EXEC sp_configure 'max worker threads', 900 ;
GO
RECONFIGURE;
GO