실행 계획 및 버퍼 할당
적용 대상: 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 하여 버퍼에서 열을 찾을 수 있습니다.