다음을 통해 공유


분할된 개체의 실행 계획 해석

새 설치: 2005년 12월 5일

분할된 데이터베이스 테이블, 인덱스 및 인덱싱된 뷰를 포함하는 쿼리 실행 계획에는 일반적으로 외부 측면에 Constant Scan 연산자를 사용하고 내부 측면에 분할된 개체의 스캔 또는 검색을 사용하여 파티션 간의 조인을 나타내는 Nested Loops 연산자가 있습니다.

분할된 개체의 실행 계획에서 Nested Loops 조인은 내부 측면에서 테이블 또는 인덱스 파티션을 하나 이상 읽습니다. Constant Scan 연산자의 Values 특성에 포함된 숫자는 파티션 번호를 나타냅니다. 파티션 번호를 살펴 보면 쿼리 최적화 프로그램이 파티션 제거를 수행하고 있음을 알 수 있습니다.

파티션 제거는 컴파일 시와 런타임 시에 모두 수행됩니다. 컴파일 시 수행된 제거는 SET 옵션 SHOWPLAN_ALL 또는 SHOWPLAN_XML에 의해 생성된 실행 계획에서 확인하거나 SQL Server Management Studio에서 예상 실행 계획 표시를 클릭하여 확인할 수 있습니다. 런타임 시 수행된 제거는 SET 옵션 STATISTICS PROFILE 또는 STATISTICS XML에 의해 생성된 실행 계획에서 확인하거나 Management Studio에서 실제 실행 계획 포함을 클릭하여 확인할 수 있습니다.

분할된 테이블 또는 인덱스에 대해 병렬 계획을 생성하면 Constant ScanNested Loops 조인 연산자 사이에 Parallelism 연산자가 표시됩니다. 이 경우 조인 외부 측면의 여러 스레드가 각각 서로 다른 파티션을 읽고 작업합니다. 스레드 수는 파티션 수와 다를 수 있습니다. 스레드 수와 파티션 수가 같으면 각 스레드가 정확히 하나의 파티션에서 작업합니다. 스레드 수가 파티션 수보다 많으면 초과 스레드는 파티션이 처리되는 동안 유휴 상태로 대기합니다. 스레드 수가 파티션 수보다 작으면 스레드가 작업을 시작하고 먼저 작업을 마친 스레드가 다음 파티션에서 작업합니다. 각 파티션은 항상 하나의 스레드에 의해 처리됩니다. 한 파티션을 여러 스레드에서 공유하지는 않지만 여러 파티션을 병렬로 처리할 수 있습니다.

다음 쿼리에서는 AdventureWorks 예제 데이터베이스에 있는 분할된 Production.TransactionHistoryArchive 테이블의 두 파티션을 평가합니다. 이 쿼리에 대한 실행 계획을 생성하면 쿼리를 만족시키기 위해 두 테이블 파티션이 조인되는 시기를 보여 주는 Nested Loops 조인 연산자가 생성됩니다. Constant Scan 연산자는 Nested Loops 조인 연산자 바로 뒤에 표시됩니다. 이 쿼리를 만족시키기 위해 조인되는 두 파티션은 Constant Scan 연산자에 대해 나열된 Values 특성에서 식별됩니다.

[!참고] 이 예를 재현하려면 먼저 AdventureWorks 예제 데이터베이스에 대해 PartitionAW.sql 스크립트를 실행해야 합니다. 자세한 내용은 Readme_PartitioningScript를 참조하십시오.

USE AdventureWorks;
GO
-- The following SET statement option produces an XML Showplan.
-- To produce a graphical execution plan, click the Include Actual
-- Execution Plan icon in the Management Studio toolbar.
SET STATISTICS XML ON;
GO
SELECT ProductID, Quantity, TransactionDate
FROM Production.TransactionHistoryArchive
WHERE TransactionDate <= '12/02/2003'
ORDER BY ProductID;
GO

Management Studio에서 그래픽 실행 계획을 생성하는 경우 Constant Scan 연산자 아이콘 위로 마우스를 이동하거나 Constant Scan 연산자 아이콘을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 창의 Values 특성에 ((1)), ((2))가 나열됩니다. 두 숫자는 쿼리에 관련된 파티션을 나타내는 번호입니다.

XML 실행 계획이 생성되면 NestedLoops 요소 아래에서 ConstantScan 요소를 찾습니다. ConstantScan 아래의 Values 하위 요소에 대해 파티션 번호가 다음과 같이 나열됩니다.

<ConstantScan>

     <Values>

          <Row>

               <ScalarOperator ScalarString="(1)">

                    <Const ConstValue="(1)" />

               </ScalarOperator>

          </Row>

          <Row>

               <ScalarOperator ScalarString="(2)">

                    <Const ConstValue="(2)" />

               </ScalarOperator>

          </Row>

     </Values>

</ConstantScan>

참고 항목

참조

Nested Loops 실행 계획 연산자
Constant Scan 실행 계획 연산자
Parallelism 실행 계획 연산자
그래픽 실행 계획 표시(SQL Server Management Studio)

개념

분할된 테이블 및 인덱스
실행 계획 SET 옵션을 사용하여 실행 계획 표시(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기