다음을 통해 공유


병렬 인덱스 작업 구성

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

이 항목에서는 최대 병렬 처리 수준을 정의하고 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 이 설정을 수정하는 방법을 설명합니다.

다중 프로세서 시스템에서 SQL Server Enterprise 이상을 실행하는 경우 인덱스 문은 다른 쿼리와 마찬가지로 인덱스 문과 관련된 검색, 정렬, 인덱싱 작업을 수행하기 위해 여러 개의 프로세서(CPU)를 사용할 수 있습니다. 단일 인덱스 문을 실행하는 데 사용되는 CPU 수는 최대 병렬 처리 수준 서버 구성 옵션, 현재 워크로드, 인덱스 통계에 따라 결정됩니다. 최대 병렬 처리 수준 옵션에서 병렬 계획 실행에 사용할 프로세서의 최대 개수를 결정합니다. SQL Server 데이터베이스 엔진이 시스템에서 진행 중인 작업이 많음을 감지하면 인덱스 작업의 병렬 처리 수준은 문 실행 시작 전에 자동으로 감소됩니다. 데이터베이스 엔진도 분할되지 않은 인덱스의 선행 키 열에 제한된 수의 고유 값이 있거나 각 고유 값의 빈도가 크게 달라지는 경우 병렬 처리 수준을 줄일 수 있습니다. 자세한 내용은 쿼리 처리 아키텍처 가이드를 참조하세요.

참고 항목

병렬 인덱스 작업은 일부 SQL Server 버전에서 사용할 수 있습니다. 자세한 내용은 SQL Server 2022의 버전 및 지원하는 기능을 참조하세요.

항목 내용

시작하기 전에

제한 사항

  • 쿼리 최적화 프로그램에서 사용하는 프로세서 수는 일반적으로 최적의 성능을 제공합니다. 그러나 매우 큰 인덱스를 만들고 다시 빌드하거나 삭제하는 작업은 리소스 집약적이며, 인덱스 작업 기간 동안 다른 애플리케이션 및 데이터베이스 작업에 필요한 리소스가 부족해질 수 있습니다. 이 문제가 발생하면 인덱스 작업에 사용할 프로세서 수를 제한하여 인덱스 문 실행에 사용되는 최대 프로세서 수를 수동으로 구성할 수 있습니다.

  • MAXDOP 인덱스 옵션은 이 옵션을 지정하는 쿼리에 대해서만 최대 병렬 처리 수준 구성 옵션을 재정의합니다. 다음 표에는 최대 병렬 처리 수준 구성 옵션 및 MAXDOP 인덱스 옵션으로 지정할 수 있는 유효한 정수 값이 나와 있습니다.

    설명
    0 서버에서 현재 시스템 워크로드에 따라 사용되는 CPU 수를 결정하도록 지정합니다. 이 값은 기본값이며 권장 설정입니다.
    1 병렬 계획이 생성되지 않습니다. 작업은 직렬로 실행됩니다.
    2-64 프로세서 수를 지정된 값으로 제한합니다. 현재 작업에 따라 지정된 것보다 적은 수의 프로세서가 사용될 수도 있습니다. 사용 가능한 CPU 수보다 더 큰 값을 지정하면 사용 가능한 실제 CPU 수가 사용됩니다.
  • 병렬 인덱스 실행 및 MAXDOP 인덱스 옵션은 다음 Transact-SQL 문에 적용됩니다.

  • MAXDOP 인덱스 옵션은 ALTER INDEX (...) REORGANIZE 문에 지정할 수 없습니다.

  • 쿼리 최적화 프로그램에서 작성 작업에 병렬 처리 수준을 적용할 경우 정렬이 필요한 분할 인덱스 작업의 메모리 요구 사항이 늘어날 수 있습니다. 병렬 처리 수준이 높을수록 메모리 요구 사항이 커집니다. 자세한 내용은 Partitioned Tables and Indexes을 참조하세요.

권한

테이블 또는 보기에 대한 ALTER 권한이 필요합니다.

SQL Server Management Studio 사용

인덱스에 대한 최대 병렬 처리 수준을 설정하려면

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스의 최대 병렬 처리 수준을 설정할 테이블이 포함된 데이터베이스를 확장합니다.

  2. 테이블 폴더를 확장합니다.

  3. 더하기 기호를 클릭하여 인덱스에 대한 최대 병렬 처리 수준을 설정할 테이블을 확장합니다.

  4. 인덱스 폴더를 확장합니다.

  5. 최대 병렬 처리 수준을 설정할 인덱스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  6. 페이지 선택아래에서 옵션을 선택합니다.

  7. 최대 병렬 처리 수준을 선택하고 1에서 64 사이의 값을 입력합니다.

  8. 확인을 클릭합니다.

Transact-SQL 사용

기존 인덱스의 최대 병렬 처리 수준을 설정하는 방법

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

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

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2022;   
    GO  
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.  
    */  
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor  
    REBUILD WITH (MAXDOP=8);   
    GO  
    

자세한 내용은 ALTER INDEX(Transact-SQL)를 참조하세요.

새 인덱스 생성 시 최대 병렬 처리 수준 지정

  1. 개체 탐색기에서 데이터베이스 엔진인스턴스에 연결합니다.

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

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.

    USE AdventureWorks2022;  
    GO  
    CREATE INDEX IX_ProductVendor_NewVendorID   
    ON Purchasing.ProductVendor (BusinessEntityID)  
    WITH (MAXDOP=8);  
    GO  
    

참고 항목

쿼리 처리 아키텍처 가이드
CREATE INDEX(Transact-SQL)
ALTER INDEX(Transact-SQL)
DROP INDEX(Transact-SQL)
ALTER TABLE(Transact-SQL)
ALTER TABLE table_constraint(Transact-SQL)
ALTER TABLE index_option(Transact-SQL)