다음을 통해 공유


실행 계획 및 버퍼 할당

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

실행하기 전에 데이터 흐름 태스크는 해당 구성 요소를 검사하고 각 구성 요소 시퀀스에 대한 실행 계획을 생성합니다. 이 섹션에서는 실행 계획, 계획을 보는 방법 및 실행 계획에 따라 입력 및 출력 버퍼가 할당되는 방법에 대해 자세히 설명합니다.

실행 계획 이해

실행 계획에는 원본 스레드 및 작업 스레드가 포함되며, 각 스레드에는 원본 스레드에 대한 출력 작업 목록 또는 작업 스레드에 대한 입력 및 출력 작업 목록을 지정하는 작업 목록이 포함됩니다. 실행 계획의 원본 스레드는 데이터 흐름의 원본 구성 요소를 나타내며 SourceThreadn에 의해 실행 계획에서 식별됩니다. 여기서 n은 원본 스레드의 0부터 시작하는 수입니다.

각 원본 스레드에서는 버퍼를 만들고, 수신기를 설정하고, 원본 구성 요소에 대해 PrimeOutput 메서드를 호출합니다. 원본 구성 요소가 데이터 흐름 태스크에서 제공하는 출력 버퍼에 행을 추가하기 시작하므로 실행이 시작되고 데이터가 시작되는 위치입니다. 원본 스레드가 실행되면 작업 균형이 작업 스레드 간에 분산됩니다.

작업 스레드는 입력 및 출력 작업 목록을 모두 포함할 수 있으며 실행 계획에서 WorkThreadn으로 식별됩니다. 여기서 n은 작업 스레드의 0부터 시작하는 수입니다. 그래프에 비동기 출력을 사용하는 구성 요소가 포함된 경우 이러한 스레드에는 출력 작업 목록이 포함됩니다.

다음 샘플 실행 계획은 대상 구성 요소에 연결된 비동기 출력을 사용하여 변환에 연결된 원본 구성 요소를 포함하는 데이터 흐름을 나타냅니다. 이 예제에서 WorkThread0에는 변환 구성 요소에 비동기 출력이 있으므로 출력 작업 목록이 포함됩니다.

SourceThread0   
    Influences: 72 158   
    Output Work List   
        CreatePrimeBuffer of type 1 for output id 10   
        SetBufferListener: "WorkThread0" for input ID 73   
        CallPrimeOutput on component "OLE DB Source" (1)   
    End Output Work List   
    This thread drives 0 distributors   
End SourceThread0   
WorkThread0   
    Influences: 72 158   
    Input Work list, input ID 73   
        CallProcessInput on input ID 73 on component "Sort" (72) for view type 2   
    End Input Work list for input 73   
    Output Work List   
        CreatePrimeBuffer of type 3 for output id 74   
        SetBufferListener: "WorkThread1" for input ID 171with internal handoff   
        CallPrimeOutput on component "Sort" (72)   
    End Output Work List   
    This thread drives 0 distributors   
End WorkThread0   
WorkThread1   
    Influences: 158   
    Input Work list, input ID 171  
        CallProcessInput on input ID 171 on component "OLE DB Destination" (158) for view type 4  
    End Input Work list for input 171   
    Output Work List   
    End Output Work List   
    This thread drives 0 distributors   
End WorkThread1  

참고 항목

실행 계획은 패키지가 실행될 때마다 생성되며, 패키지에 로그 공급자를 추가하고, 로깅을 사용하도록 설정하고, PipelineExecutionPlan 이벤트를 선택하여 캡처할 수 있습니다.

버퍼 할당 이해

실행 계획에 따라 데이터 흐름 태스크는 데이터 흐름 구성 요소의 출력에 정의된 열을 포함하는 버퍼를 만듭니다. 버퍼는 비동기 출력이 있는 구성 요소가 발견될 때까지 데이터가 구성 요소 시퀀스를 통해 흐르는 동안 다시 사용합니다. 그런 다음 비동기 출력의 출력 열과 다운스트림 구성 요소의 출력 열을 포함하는 새 버퍼가 만들어집니다.

실행 중 구성 요소에서는 현재 원본 또는 작업 스레드의 버퍼에 액세스할 수 있습니다. 버퍼는 메서드에서 제공하는 ProcessInput 입력 버퍼 또는 메서드에서 제공하는 PrimeOutput 출력 버퍼입니다. 또한 이 PipelineBuffer 속성은 Mode 각 버퍼를 입력 또는 출력 버퍼로 식별합니다.

비동기 출력을 사용하는 변환은 ProcessInput 메서드에서 기존 입력 버퍼를 받고 PrimeOutput 메서드에서 새 출력 버퍼를 받습니다. 비동기 출력이 있는 변환 구성 요소는 입력 및 출력 버퍼를 모두 수신하는 유일한 형식의 데이터 흐름 구성 요소입니다.

구성 요소에 제공된 버퍼는 구성 요소의 입력 또는 출력 열 컬렉션에 있는 것보다 더 많은 열을 포함할 가능성이 높기 때문에 구성 요소 개발자는 LineageID를 지정하여 메서드를 호출 FindColumnByLineageID 하여 버퍼에서 열을 찾을 수 있습니다.