병렬 인덱스 작업 구성Configure Parallel Index Operations

이 항목은 다음에 적용됩니다. 예SQL Server(2016부터)예Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

이 항목에서는 최대 병렬 처리 수준을 정의하고 SQL Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio 또는 Transact-SQLTransact-SQL을 사용하여 이 설정을 수정하는 방법에 대해 설명합니다.This topic defines max degree of parallelism and explains how to modify this setting in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. SQL ServerSQL Server Enterprise 이상을 실행하는 다중 프로세서 컴퓨터에서는 다른 쿼리와 마찬가지로 인덱스 문이 여러 프로세서를 사용하여 인덱스 문과 관련된 검색, 정렬 및 인덱스 작업을 수행할 수 있습니다.On multiprocessor computers that are running SQL ServerSQL Server Enterprise or higher, index statements may use multiple processors to perform the scan, sort, and index operations associated with the index statement just like other queries do. 단일 인덱스 문 실행에 사용되는 프로세서 수는 max degree of parallelism 구성 옵션, 현재 작업 및 인덱스 통계에 따라 결정됩니다.The number of processors used to run a single index statement is determined by the max degree of parallelism configuration option, the current workload, and the index statistics. max degree of parallelism 옵션은 병렬 계획 실행에 사용할 프로세서의 최대 개수를 결정합니다.The max degree of parallelism option determines the maximum number of processors to use in parallel plan execution. SQL Server 데이터베이스 엔진SQL Server Database Engine 이 시스템에서 진행 중인 작업이 많음을 감지하면 문이 실행되기 전에 인덱스 작업의 병렬 처리 수준이 자동으로 감소됩니다.If the SQL Server 데이터베이스 엔진SQL Server Database Engine detects that the system is busy, the degree of parallelism of the index operation is automatically reduced before statement execution starts. 분할되지 않은 인덱스의 선행 키 열의 고유 값 수가 제한되거나 각 고유 값의 빈도가 상당히 다양한 경우 데이터베이스 엔진Database Engine 은 병렬 처리 수준을 줄일 수도 있습니다.The 데이터베이스 엔진Database Engine can also reduce the degree of parallelism if the leading key column of a non-partitioned index has a limited number of distinct values or the frequency of each distinct value varies significantly.

참고

병렬 인덱스 작업은 일부 SQL ServerSQL Server 버전에서만 사용할 수 있습니다.Parallel index operations are not available in every SQL ServerSQL Server edition. 자세한 내용은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.For more information, see Features Supported by the Editions of SQL Server 2016

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

제한 사항 Limitations and Restrictions

  • 쿼리 최적화 프로그램에서 사용하는 프로세서 수는 대개 최적의 성능을 제공합니다.The number of processors that are used by the query optimizer typically provides optimal performance. 그러나 매우 큰 인덱스를 생성, 다시 작성 및 삭제하는 작업에서는 리소스가 많이 소모되므로 인덱스 작업 중 다른 응용 프로그램 및 데이터베이스 작업에 사용할 리소스가 부족할 수 있습니다.However, operations such as creating, rebuilding, or dropping very large indexes are resource intensive and can cause insufficient resources for other applications and database operations for the duration of the index operation. 이 문제가 발생하면 인덱스 작업에 사용할 프로세서 수를 제한하여 인덱스 문 실행에 사용되는 최대 프로세서 수를 직접 구성할 수 있습니다.When this problem occurs, you can manually configure the maximum number of processors that are used to run the index statement by limiting the number of processors to use for the index operation.

  • MAXDOP 인덱스 옵션을 지정한 쿼리에 대해서만 max degree of parallelism 구성 옵션이 무시됩니다.The MAXDOP index option overrides the max degree of parallelism configuration option only for the query specifying this option. 다음 표에서는 최대 병렬 처리 수준 구성 옵션 및 MAXDOP 인덱스 옵션에 지정할 수 있는 유효한 정수 값을 보여 줍니다.The following table lists the valid integer values that can be specified with the max degree of parallelism configuration option and the MAXDOP index option.

    Value 설명Description
    00 서버가 현재 시스템 작업에 따라 사용되는 CPU의 수를 결정하도록 지정합니다.Specifies that the server determines the number of CPUs that are used, depending on the current system workload. 이 값은 기본값이며 권장 설정입니다.This is the default value and recommended setting.
    11 병렬 계획이 생성되지 않습니다.Suppresses parallel plan generation. 작업이 직렬로 실행됩니다.The operation will be executed serially.
    2-642-64 지정된 값으로 프로세서 수를 제한합니다.Limits the number of processors to the specified value. 현재 작업에 따라 지정된 것보다 적은 수의 프로세서가 사용될 수도 있습니다.Fewer processors may be used depending on the current workload. 사용 가능한 CPU 수보다 더 큰 수를 지정하면 사용 가능한 실제 CPU 수가 사용됩니다.If a value larger than the number of available CPUs is specified, the actual number of available CPUs is used.
  • 다음은 병렬 인덱스 실행 및 MAXDOP 인덱스 옵션이 적용되는 Transact-SQLTransact-SQL 문입니다.Parallel index execution and the MAXDOP index option apply to the following Transact-SQLTransact-SQL statements:

    • CREATE INDEXCREATE INDEX

    • ALTER INDEX REBUILDALTER INDEX REBUILD

    • DROP INDEX(클러스터형 인덱스에만 해당)DROP INDEX (This applies to clustered indexes only.)

    • ALTER TABLE ADD (인덱스) CONSTRAINTALTER TABLE ADD (index) CONSTRAINT

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

  • ALTER INDEX REORGANIZE 문에서 MAXDOP 인덱스 옵션을 지정할 수 없습니다.The MAXDOP index option cannot be specified in the ALTER INDEX REORGANIZE statement.

  • 쿼리 최적화 프로그램에서 작성 작업에 병렬 처리 수준을 적용할 경우 정렬이 필요한 분할 인덱스 작업의 메모리 요구 사항이 늘어날 수 있습니다.Memory requirements for partitioned index operations that require sorting can be greater if the query optimizer applies degrees of parallelism to the build operation. 병렬 처리 수준이 높을수록 메모리 요구 사항이 늘어납니다.The higher the degrees of parallelism, the greater the memory requirement is. 자세한 내용은 Partitioned Tables and Indexes를 참조하세요.For more information, see Partitioned Tables and Indexes.

보안 Security

사용 권한 Permissions

테이블이나 뷰에 대한 ALTER 권한이 필요합니다.Requires ALTER permission on the table or view.

SQL Server Management Studio 사용 Using SQL Server Management Studio

인덱스에 대한 최대 병렬 처리 수준을 설정하려면To set max degree of parallelism on an index

  1. 개체 탐색기에서 더하기 기호를 클릭하여 인덱스에 대한 최대 병렬 처리 수준을 설정할 테이블이 포함된 데이터베이스를 확장합니다.In Object Explorer, click the plus sign to expand the database that contains the table on which you want to set max degree of parallelism for an index.

  2. 테이블 폴더를 확장합니다.Expand the Tables folder.

  3. 더하기 기호를 클릭하여 인덱스에 대한 최대 병렬 처리 수준을 설정할 테이블을 확장합니다.Click the plus sign to expand the table on which you want to set max degree of parallelism for an index.

  4. 인덱스 폴더를 확장합니다.Expand the Indexes folder.

  5. 최대 병렬 처리 수준을 설정할 인덱스를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.Right-click the index for which you want to set the max degree of parallelism and select Properties.

  6. 페이지 선택아래에서 옵션을 선택합니다.Under Select a page, select Options.

  7. 최대 병렬 처리 수준을 선택하고 1에서 64 사이의 값을 입력합니다.Select Maximum degree of parallelism, and then enter some value between 1 and 64.

  8. 확인을 클릭합니다.Click OK.

Transact-SQL 사용 Using Transact-SQL

기존 인덱스에 대한 최대 병렬 처리 수준을 설정하려면To set max degree of parallelism on an existing index

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    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)를 참조하세요.For more information, see ALTER INDEX (Transact-SQL).

새 인덱스에 대한 최대 병렬 처리 수준 설정Set max degree of parallelism on a new index

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

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

    자세한 내용은 CREATE INDEX(Transact-SQL)를 참조하세요.For more information, see CREATE INDEX (Transact-SQL).