Есть несколько блогов, которые утверждают, что классифицируют SSIS Преобразования в блокирующие (асинхронные), неблокирующие (синхронные) и частично блокирующие (асинхронные).
При рассмотрении конкретного вопроса: многоадресная передача является синхронной (неблокирующей) или асинхронной (частично блокирующей)?
Один из источников заявляет об асинхронности: «Многоадресная передача - это асинхронное (также известное как частичное блокирование) преобразование» источник: http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx
и другой синхронный: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/
Другие ресурсы утверждают, что преобразование DQS Cleansing является неблокирующим преобразованием, но мне кажется , что оно частично блокирует.
Пожалуйста, не отвечайте со ссылкой на список преобразований, классифицированных по типу. Надеемся, что ответ на этот вопрос позволит более строгому методу доказать правильный ответ.
Поскольку преобразования с частичной блокировкой и блокированием будут перемещать данные в новые буферы, в отличие от неблокирующих операций, которые работают с буфером на месте, я подозреваю, что решение будет заключаться в наблюдении за созданием буфера во время выполнения преобразования, но я не уверен ( ) если это даст окончательный ответ и (б) как это сделать.
Я считаю, что неблокирующее преобразование не вызовет начало нового дерева выполнения, поэтому возможно, что ответ заключается в регистрации в PipelineExectionTrees и PipelineExecutionPlan. Это может различать синхронный и асинхронный, но не может различать частичную блокировку и полную блокировку.
источник
Ответы:
Блокирующая операция должна ждать, пока все строки не будут просмотрены и обработаны, прежде чем она сможет начать заполнять буферы.
Операция, которая частично блокирует, записывает данные в новые буферы, которые обрабатываются следующей операцией только после заполнения каждого буфера (обычно чуть менее 10000 строк).
Операция, которая не является блокирующей, может иметь последующую операцию, работающую с тем же буфером, поскольку обрабатывается каждая строка.
Но многие тексты будут ссылаться на «частичную блокировку» как «неблокирующую», поскольку поведение намного ближе к «неблокирующей», чем «блокирующей».
Вы должны быть в состоянии сказать, что происходит, наблюдая за потоком данных и наблюдая, когда числа увеличиваются в каждой точке.
источник