다음을 통해 공유


서버 구성: 최대 병렬 처리 수준

적용 대상: SQL Server

이 문서에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 max degree of parallelism(MAXDOP) 서버 구성 옵션을 구성하는 방법에 대해 설명합니다. 마이크로프로세서 또는 CPU가 둘 이상인 컴퓨터에서 SQL Server의 인스턴스가 실행되는 경우 데이터베이스 엔진은 병렬 처리를 사용할 수 있는지 여부를 검색합니다. 병렬 처리 수준은 각 병렬 계획 실행에 대해 단일 문 실행에 사용되는 프로세서 수를 설정합니다. max degree of parallelism 옵션을 사용하여 병렬 계획 실행에 사용되도록 프로세서 수를 제한할 수 있습니다. 설정된 max degree of parallelism제한에 대한 자세한 내용은 이 페이지의 고려 사항 섹션을 참조하세요. SQL Server에서는 쿼리에 대한 병렬 실행 계획, 인덱스 DDL(데이터 정의 언어) 작업, 병렬 삽입, 온라인 열 변경, 병렬 통계 수집 및 정적 커서와 키 집합 커서 채우기를 고려합니다.

SQL Server 2019(15.x)에서는 설치 프로세스 중에 사용할 수 있는 프로세서 수에 따라 서버 구성 옵션을 설정 max degree of parallelism 하기 위한 자동 권장 사항을 도입했습니다. 설정 사용자 인터페이스를 사용하여 권장 설정을 적용하거나 사용자 고유 값을 입력할 수 있습니다. 자세한 내용은 데이터베이스 엔진 구성 - MaxDOP 페이지를 참조하세요.

Azure SQL Database 및 Azure SQL Managed Instance에서 각 단일 데이터베이스, 탄력적 풀 데이터베이스 및 관리되는 인스턴스에 대한 기본 MAXDOP 설정은 다음과 같습니다 8. Azure SQL Database MAXDOP 에서 데이터베이스 범위 구성은 .로 8설정됩니다. Azure SQL Managed Instance max degree of parallelism 에서 서버 구성 옵션은 .로 설정됩니다 8.

Azure SQL Database의 MAXDOP에 대한 자세한 내용은 Azure SQL Database에서 최대 병렬 처리 수준(MAXDOP) 구성을 참조하세요.

고려 사항

이 옵션은 고급 옵션으로, 숙련된 데이터베이스 관리자나 공인된 SQL Server 전문가만이 변경해야 합니다.

affinity mask 옵션을 기본값으로 설정하지 않으면 SMP(대칭적 다중 처리) 시스템에서 SQL Server 에 사용 가능한 프로세서 수가 제한될 수도 있습니다.

max degree of parallelism 0 SQL Server에서 사용 가능한 모든 프로세서를 최대 64개의 프로세서로 사용할 수 있도록 설정 그러나 대부분의 경우에 권장되는 값은 아닙니다. 최대 병렬 처리 수준에 권장되는 값에 대한 자세한 내용은 이 페이지의 권장 사항 섹션을 참조하세요.

병렬 계획을 생성하지 않으려면 max degree of parallelism1로 설정합니다. 단일 쿼리 실행 중에 사용할 수 있는 프로세서 코어의 최대 개수를 지정하려면 1에서 32,767 사이의 숫자로 값을 설정합니다. 사용 가능한 프로세서 수보다 더 큰 수를 지정하면 사용 가능한 실제 프로세서 수가 사용됩니다. 컴퓨터에 프로세서가 하나만 있는 경우 max degree of parallelism 값이 무시됩니다.

최대 병렬 처리 수준 제한은 작업별로 설정됩니다. 요청별 또는 쿼리 제한별로 수행되지 않습니다. 즉, 병렬 쿼리를 실행하는 동안 단일 요청은 MAXDOP 제한까지 여러 작업을 생성할 수 있으며 각 태스크는 하나의 작업자와 하나의 스케줄러를 사용합니다. 자세한 내용은 스레드 및 작업 아키텍처 가이드의 병렬 작업 예약 섹션을 참조하세요.

다음과 같이 최대 병렬 처리 수준 서버 구성 값을 재정의할 수 있습니다.

  • 쿼리 수준에서 쿼리 힌트 또는 쿼리 저장소 힌트를 사용합니다MAXDOP.
  • 데이터베이스 수준에서 데이터베이스 범위 구성MAXDOP 사용합니다.
  • 워크로드 수준에서 CREATE WORKLOAD GROUPMAX_DOP 사용합니다.

인덱스를 만들거나 다시 작성하는 인덱스 작업 또는 클러스터형 인덱스를 삭제하는 인덱스 작업은 리소스가 많이 소모됩니다. 인덱스 문에 MAXDOP 인덱스 옵션을 지정하면 인덱스 작업의 max degree of parallelism 값을 재정의할 수 있습니다. MAXDOP 값은 실행 시 문에 적용되며 인덱스 메타데이터에 저장되지 않습니다. 자세한 내용은 병렬 인덱스 작업 구성을 참조하세요.

이 옵션은 쿼리 및 인덱스 작업 외에도 , DBCC CHECKDBDBCC CHECKFILEGROUP.의 DBCC CHECKTABLE병렬 처리를 제어합니다. 추적 플래그 2528을 사용하여 이러한 문의 병렬 실행 계획을 비활성화할 수 있습니다. 자세한 내용은 추적 플래그 2528을 참조 하세요.

SQL Server 2022(16.x)에서는 경과된 시간과 대기 시간을 기준으로 반복 쿼리에 대한 병렬 처리 비효율성을 식별하여 쿼리 성능을 개선하는 새로운 기능인 DOP(병렬 처리 수준) 피드백을 도입했습니다. DOP 피드백은 지능형 쿼리 처리 기능 제품군의 일부이며 반복 쿼리에 대한 병렬 처리의 차선 사용을 해결합니다. DOP 피드백에 대한 자세한 내용은 DOP(병렬 처리 수준) 피드백을 참조하세요.

권장 사항

SQL Server 2016(13.x) 이상 버전에서는 서비스 시작 중에 데이터베이스 엔진 시작 시 NUMA 노드 또는 소켓당 8개 이상의 물리적 코어를 검색하는 경우 소프트 NUMA 노드가 기본적으로 자동으로 생성됩니다. 데이터베이스 엔진는 논리 프로세서를 동일한 실제 코어에서 서로 다른 soft-NUMA 노드에 배치합니다. 다음 표의 권장 사항은 병렬 쿼리의 모든 작업자 스레드를 동일한 소프트 NUMA 노드 내에 유지하는 것을 목표로 합니다. 이렇게 하면 워크로드에 대한 NUMA 노드 간에 작업자 스레드의 쿼리 및 배포 성능이 향상됩니다. 자세한 내용은 Soft-NUMA(SQL Server)를 참조하세요.

SQL Server 2016(13.x) 이상 버전에서는 서버 구성 값을 구성할 max degree of parallelism 때 다음 지침을 사용합니다.

서버 구성 프로세서 수 지침
단일 NUMA 노드가 있는 서버 여덟 개 이하의 논리 프로세서 논리 프로세서 수 또는 그 아래에 MAXDOP 유지
단일 NUMA 노드가 있는 서버 논리 프로세서 여덟 개 초과 MAXDOP을 8개로 유지
여러 NUMA 노드가 있는 서버 NUMA 노드당 16개 이하의 논리 프로세서 NUMA 노드당 논리 프로세서 수 또는 그 아래에 MAXDOP 유지
여러 NUMA 노드가 있는 서버 NUMA 노드당 논리 프로세서 16개 초과 MAXDOP를 MAX 값이 16인 NUMA 노드당 논리 프로세스 수의 절반으로 유지

이전 표의 NUMA 노드는 SQL Server 2016(13.x) 이상 버전에서 자동으로 만든 소프트 NUMA 노드 또는 soft-NUMA를 사용하지 않도록 설정된 경우 하드웨어 기반 NUMA 노드를 참조합니다.

Resource Governor 작업 그룹에 대해 최대 병렬 처리 수준 옵션을 설정할 때도 동일한 지침을 사용합니다. 자세한 내용은 CREATE WORKLOAD GROUP을 참조하세요.

SQL Server 2014 및 이전 버전

max degree of parallelism 서버 구성 값을 구성할 때 SQL Server 2008(10.0.x)~SQL Server 2014(12.x)에서 다음 지침을 사용합니다.

서버 구성 프로세서 수 지침
단일 NUMA 노드가 있는 서버 여덟 개 이하의 논리 프로세서 논리 프로세서 수 또는 그 아래에 MAXDOP 유지
단일 NUMA 노드가 있는 서버 논리 프로세서 여덟 개 초과 MAXDOP을 8개로 유지
여러 NUMA 노드가 있는 서버 NUMA 노드당 여덟 개 이하의 논리 프로세서 NUMA 노드당 논리 프로세서 수 또는 그 아래에 MAXDOP 유지
여러 NUMA 노드가 있는 서버 NUMA 노드당 논리 프로세서 여덟 개 초과 MAXDOP을 8개로 유지

사용 권한

매개 변수 없이 또는 첫 번째 매개 변수만 사용하여 sp_configure 를 실행할 수 있는 권한은 기본적으로 모든 사용자에게 부여됩니다. 구성 옵션을 변경하거나 RECONFIGURE 문을 실행하는 두 매개 변수를 사용하여 sp_configure를 실행하려면 사용자에게 ALTER SETTINGS 서버 수준 권한이 있어야 합니다. ALTER SETTINGS 권한은 sysadminserveradmin 고정 서버 역할에 의해 암시적으로 보유됩니다.

SQL Server Management Studio 또는 Azure Data Studio 사용

Azure Data Studio에서 확장을 설치 Database Admin Tool Extensions for Windows 하거나 다음 T-SQL 메서드를 사용합니다.

이러한 옵션은 인스턴스에 MAXDOP 대해 변경됩니다.

  1. 개체 탐색기에서 원하는 인스턴스를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

  2. 고급 노드를 선택합니다.

  3. 최대 병렬 처리 수준 상자에서 병렬 계획 실행에 사용할 프로세서의 최대 개수를 선택합니다.

Transact-SQL 사용

  1. SQL Server Management Studio 또는 Azure Data Studio를 사용하여 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 선택합니다.

  3. 다음 예제를 복사하여 쿼리 창에 붙여넣고 실행을 선택합니다. 이 예제에서는 sp_configure 를 사용하여 max degree of parallelism 옵션을 16으로 구성하는 방법을 보여 줍니다.

    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'max degree of parallelism', 16;
    GO
    
    RECONFIGURE WITH OVERRIDE;
    GO
    
    EXECUTE sp_configure 'show advanced options', 0;
    GO
    
    RECONFIGURE;
    GO
    

자세한 내용은 서버 구성 옵션을 참조하세요.

후속 작업: 최대 병렬 처리 수준 옵션을 구성한 후

이 설정은 서버를 다시 시작하지 않아도 즉시 적용됩니다.