Поделиться через


План выполнения и выделение буферов

Перед выполнением задача потока данных проверяет свои компоненты и формирует план выполнения для каждой последовательности компонентов. В этом разделе предоставляются сведения о плане выполнения, рассматривается, как просмотреть план и как на основании плана выполнения выделяются входной и выходной буферы.

Основные сведения о плане выполнения

План выполнения содержит потоки источника и рабочие потоки. Каждый поток содержит списки действий, которые задают списки действий над выходными данными для потоков источника или списки действий над входными и выходными данными для рабочих потоков. Потоки источника в плане выполнения представляют компоненты источника в потоке данных и идентифицированы в плане выполнения как SourceThreadn, где n — это начинающееся с нуля число потоков источника.

Каждый поток источника создает буфер, устанавливает прослушивателя и вызывает метод PrimeOutput на компоненте источника. Здесь начинается выполнение и отсюда берутся данные, когда компонент источника начинает добавлять строки в выходные буферы, предоставляемые ему задачей потока данных. После начала работы потоков источника работа распределяется среди рабочих потоков.

Рабочий поток содержит списки действий как над входными, так и над выходными данными и идентифицируется в плане выполнения как WorkThreadn, где n — это начинающееся с нуля число рабочих потоков. Эти потоки содержат списки действий над выходными данными, если граф содержит компонент с асинхронными выходами.

Следующий образец плана выполнения представляет поток данных, который содержит компонент источника, подключенный к преобразованию с асинхронным выходом, подключенным к компоненту назначения. В этом примере 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. Свойство Mode буфера PipelineBuffer также идентифицирует каждый буфер как входной или выходной буфер.

Компоненты преобразования с асинхронными выходами получают существующий входной буфер от метода ProcessInput и получают новый выходной буфер от метода PrimeOutput. Компонент преобразования с асинхронными выходами является единственным типом компонентов потока данных, который получает и входной, и выходной буфера.

Поскольку буфер, предоставленный компоненту, скорее всего, содержит больше столбцов, чем имеет компонент в его коллекциях входных и выходных столбцов, разработчики компонентов могут вызывать метод FindColumnByLineageID, чтобы определить положение столбца в буфере по его идентификатору LineageID.

Значок служб Integration Services (маленький)Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загружать новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

Чтобы получать автоматические уведомления об этих обновлениях, подпишитесь на RSS-каналы, предлагаемые на этой странице.