Execution Plan and Buffer Allocation
Przed wykonaniem zadanie przepływ danych sprawdza, czy w jego części i generuje plan wykonania dla każdej kolejności składników.Ta sekcja zawiera szczegółowe informacje dotyczące plan wykonania, jak do wyświetlania planu i w jaki sposób wejściowe i wyjściowe bufory są przydzielane na podstawie planu wykonania.
Opis plan wykonania
Plan wykonania zawiera urządzenie źródłowe wątek i wątek roboczych i każdego wątek zawiera listy pracy, określające wyników pracy list dla wątek urządzenie źródłowe lub dane wejściowe i wyjściowe działać list dla wątek roboczych.Wątki urządzenie źródłowe plan wykonania reprezentują składników źródłowy przepływ danych i są identyfikowane w planów wykonywania przez SourceThreadn, where n jest od zera numer wątek urządzenie źródłowe.
Każdy wątek urządzenie źródłowe tworzy buforu, ustawia odbiornika i wywołuje PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda składnika urządzenie źródłowe. Jest to w przypadku, gdy rozpoczyna się wykonywanie i dane pochodzą, zostanie uruchomiony składnik urządzenie źródłowe Dodawanie buforów wierszy w danych wyjściowych, które są dostarczane do niego przez zadanie przepływ danych.Po wątków źródłowy jest uruchomiony, saldo praca zostanie rozdzielona między wątków roboczych.
Wątek pracy może zawierać obie listy wejściowe i wyjściowe pracy i jest identyfikowany w plan wykonania jako WorkThreadn, where n jest od zera numer wątku roboczego.Tych wątków zawierają dane wyjściowe pracy listy, jeśli wykres zawiera składnik z asynchronicznego wyjść.
Następujący przykładowy plan wykonania reprezentuje przepływ danych, zawierający składnik urządzenie źródłowe podłączony do przekształcania o asynchronicznego wyjściowej podłączony do składnika docelowego.W tym przykładzie WorkThread0 zawiera listę pracy wyjściowego, ponieważ składnik transformacja asynchronicznej danych wyjściowych.
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
Uwaga
Zostanie wygenerowany plan wykonania każdej czas pakiet zostanie wykonana i może być przechwycone przez dodanie do pakietu, umożliwiając rejestrowanie, a następnie wybierając dostawca dziennika PipelineExecutionPlan zdarzenie.
Opis alokacji buforu
W zależności od plan wykonania zadania przepływ danych tworzy bufory, które zawierają w kolumnach wyznaczonych w wyjść składników przepływ danych.Bufor jest używana wielokrotnie jako przepływów danych za pomocą sekwencji składników, aż do chwili, kiedy składnik z asynchronicznego wyjść.Nowa buforu tworzona jest, który zawiera kolumn wyjściowych asynchronicznej danych wyjściowych i kolumny wyjściowe niższego rzędu składników.
Podczas wykonywania składniki mają dostęp do buforu w bieżącym wątek urządzenie źródłowe lub pracy.Bufor jest albo wprowadzania bufor przez, dostarczone przez ProcessInput(Int32, PipelineBuffer) Metoda lub buforu wyjściowego dostarczonych przez PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda. The Mode() właściwość of the PipelineBuffer also identifies each buffer as an input or output buffer.
Składniki transformacja z asynchronicznego wyjść odbierać istniejących buforu wejściowego z ProcessInput(Int32, PipelineBuffer) metody i odebrać nowe bufor wyjściowy z PrimeOutput(Int32, array<Int32[], array<PipelineBuffer[]) Metoda. Składnik transformacja z wyjść asynchronicznej jest to jedyny typ składnik przepływ danych który odbiera dane wejściowe i bufor przez dane wyjściowe.
Ponieważ bufor, dostarczane ze składnikiem jest mogących zawierać ma więcej kolumn niż składnika w swojej kolekcji kolumna wejściowego lub wyjściowego, składnik deweloperzy mogą wywoływać FindColumnByLineageID(Int32, Int32) Metoda, aby określić położenie kolumna w buforze za jego LineageID.
|