병렬 인덱스 작업 구성

Microsoft SQL Server 2005 Enterprise Edition을 실행하는 다중 프로세서 컴퓨터에서는 다른 쿼리와 마찬가지로 인덱스 문이 추가 프로세서를 사용하여 인덱스 문과 관련된 검색 및 정렬 작업을 수행할 수 있습니다. 한 개의 인덱스 문 실행에 사용되는 프로세서 수는 max degree of parallelism 구성 옵션과 현재 작업에 따라 결정됩니다. max degree of parallelism 옵션을 사용하여 병렬 계획 실행에 사용할 프로세서 수를 제한할 수 있습니다. 시스템에서 진행 중인 작업이 많을 경우에는 문이 실행되기 전에 인덱스 작업의 병렬 처리 수준이 자동으로 감소됩니다.

[!참고] 병렬 인덱스 작업은 SQL Server 2005 Enterprise Edition에서만 사용할 수 있습니다.

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

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

max degree of parallelism 구성 옵션에 사용되는 모든 의미 규칙은 MAXDOP 인덱스 옵션이 사용된 경우 적용할 수 있습니다. 자세한 내용은 max degree of parallelism 옵션을 참조하십시오.

LOB_COMPACTION를 지정하거나 지정하지 않고 ALTER INDEX REORGANIZE를 실행할 경우 max degree of parallelism 값은 단일 스레드 작업이 됩니다. ALTER INDEX REORGANIZE 문에서 MAXDOP 인덱스 옵션을 지정할 수 없습니다.

온라인 인덱스 작업

온라인 인덱스 작업은 인덱스 작업 중 동시 사용자 작업을 허용합니다. MAXDOP 옵션을 사용하여 온라인 인덱스 작업에만 사용되는 프로세서 수를 제어할 수 있습니다. 이렇게 하면 인덱스 작업에 사용되는 리소스와 현재 사용자가 사용하는 리소스를 적절히 조정할 수 있습니다. 자세한 내용은 온라인으로 인덱스 작업 수행을 참조하십시오.

분할 인덱스 작업

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

다음 예는 ProductVendor 테이블에 IX_ProductVendor_VendorID 인덱스를 만들고 max degree of parallelism 옵션을 8로 설정합니다. 데이터베이스 엔진에서는 서버에 프로세서가 8개 이상 있다고 가정하고 인덱스 작업의 실행에 사용되는 프로세서 수를 8개 이하로 제한합니다.

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO

참고 항목

개념

병렬 쿼리 처리

관련 자료

ALTER INDEX(Transact-SQL)
ALTER TABLE(Transact-SQL)
CREATE INDEX(Transact-SQL)
DROP INDEX(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기