병렬 인덱스 작업 구성

이 항목에서는 최대 병렬 처리 수준을 정의하고 SQL Server 2012에서 SQL Server Management Studio 또는 Transact-SQL을 사용하여 이 설정을 수정하는 방법에 대해 설명합니다. SQL Server Enterprise 이상을 실행하는 다중 프로세서 컴퓨터에서는 다른 쿼리와 마찬가지로 인덱스 문이 여러 프로세서를 사용하여 인덱스 문과 관련된 검색, 정렬 및 인덱스 작업을 수행할 수 있습니다. 단일 인덱스 문을 실행하는 데 사용되는 프로세서 수는 max degree of parallelism 구성 옵션, 현재 작업 및 인덱스 통계에 따라 결정됩니다. max degree of parallelism 옵션은 병렬 계획 실행에서 사용할 최대 프로세서 수를 결정합니다. SQL Server 데이터베이스 엔진에서 시스템이 사용 중임을 감지한 경우 문 실행을 시작하기 전에 인덱스 작업의 병렬 처리 수준이 자동으로 감소됩니다. 분할되지 않은 인덱스의 선행 키 열에 제한된 수의 고유 값이 있거나 각 고유 값의 빈도가 크게 다른 경우에도 데이터베이스 엔진에서 병렬 처리 수준이 감소할 수 있습니다.

[!참고]

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

항목 내용

  • 시작하기 전 주의 사항

    제한 사항

    보안

  • 최대 병렬 처리 수준을 설정하려면:

    SQL Server Management Studio

    Transact-SQL

시작하기 전 주의 사항

제한 사항

  • 쿼리 최적화 프로그램에서 사용하는 프로세서 수는 대개 최적의 성능을 제공합니다. 그러나 매우 큰 인덱스를 생성, 다시 작성 및 삭제하는 작업에서는 리소스가 많이 소모되므로 인덱스 작업 중 다른 응용 프로그램 및 데이터베이스 작업에 사용할 리소스가 부족할 수 있습니다. 이 문제가 발생하면 인덱스 작업에 사용할 프로세서 수를 제한하여 인덱스 문 실행에 사용되는 최대 프로세서 수를 직접 구성할 수 있습니다.

  • MAXDOP 인덱스 옵션을 지정한 쿼리에 대해서만 max degree of parallelism 구성 옵션이 무시됩니다. 다음 표에서는 max degree of parallelism 구성 옵션 및 MAXDOP 인덱스 옵션에 지정할 수 있는 유효한 정수 값을 보여 줍니다.

    설명

    0

    서버가 현재 시스템 작업에 따라 사용되는 CPU의 수를 결정하도록 지정합니다. 이 값은 기본값이며 권장 설정입니다.

    1

    병렬 계획이 생성되지 않습니다. 작업이 직렬로 실행됩니다.

    2-64

    지정된 값으로 프로세서 수를 제한합니다. 현재 작업에 따라 지정된 것보다 적은 수의 프로세서가 사용될 수도 있습니다. 사용 가능한 CPU 수보다 더 큰 수를 지정하면 사용 가능한 실제 CPU 수가 사용됩니다.

  • 다음은 병렬 인덱스 실행 및 MAXDOP 인덱스 옵션이 적용되는 Transact-SQL 문입니다.

    • CREATE INDEX

    • ALTER INDEX REBUILD

    • DROP INDEX(클러스터형 인덱스에만 해당)

    • ALTER TABLE ADD (인덱스) CONSTRAINT

    • ALTER TABLE DROP (클러스터형 인덱스) CONSTRAINT

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

  • 쿼리 최적화 프로그램에서 작성 작업에 병렬 처리 수준을 적용할 경우 정렬이 필요한 분할 인덱스 작업의 메모리 요구 사항이 늘어날 수 있습니다. 병렬 처리 수준이 높을수록 메모리 요구 사항이 늘어납니다. 자세한 내용은 분할된 테이블 및 인덱스를 참조하십시오.

보안

사용 권한

테이블이나 뷰에 대한 ALTER 권한이 필요합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

SQL Server Management Studio 사용

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

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

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

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

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

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

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

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

  8. 확인을 클릭합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]

Transact-SQL 사용

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

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

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

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

    USE AdventureWorks2012; 
    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 AdventureWorks2012;
    GO
    CREATE INDEX IX_ProductVendor_NewVendorID 
    ON Purchasing.ProductVendor (BusinessEntityID)
    WITH (MAXDOP=8);
    GO
    

자세한 내용은 CREATE INDEX(Transact-SQL)를 참조하십시오.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[Top]