max degree of parallelism(서버 구성 옵션 구성)

적용 대상: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(MAXDOP)에 설정된 제한에 대한 자세한 내용은 이 페이지의 고려 사항 섹션을 참조하세요. SQL Server에서는 쿼리에 대한 병렬 실행 계획, 인덱스 DDL(데이터 정의 언어) 작업, 병렬 삽입, 온라인 열 변경, 병렬 통계 수집 및 정적 커서와 키 집합 커서 채우기를 고려합니다.

참고

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

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

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

시작하기 전에

고려 사항

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

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

  • MAXDOP(최대 병렬 처리 수준)를 0으로 설정하면 SQL Server는 사용 가능한 모든 프로세서를 최대 64개까지 사용합니다. 그러나 대부분의 경우에 권장되는 값은 아닙니다. 최대 병렬 처리 수준에 권장되는 값에 대한 자세한 내용은 이 페이지의 권장 사항 섹션을 참조하세요.

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

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

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

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

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

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

권장 사항

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

SQL Server 2016(13.x)부터 max degree of parallelism 서버 구성 값을 구성할 때 다음 지침을 사용하세요.

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

참고

위 표의 NUMA 노드는 SQL Server 2016(13.x) 이상 버전에서 자동으로 생성되는 소프트 NUMA 노드 또는 소프트 NUMA가 사용되지 않는 경우 하드웨어 기반 NUMA 노드를 가리킵니다. Resource Governor 작업 그룹에 대해 최대 병렬 처리 수준 옵션을 설정할 때도 동일한 지침을 사용합니다. 자세한 내용은 작업 그룹 만들기(Transact-SQL)를 참조하세요.

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

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

보안

사용 권한

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

SQL Server Management Studio 또는 Azure Data Studio 사용

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

최대 병렬 처리 수준 옵션 구성

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

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

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

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

Transact-SQL 사용

T-SQL을 사용하여 최대 병렬 처리 수준 옵션 구성

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

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

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

USE AdventureWorks2022;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

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

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

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