我无法理解为什么Union All是半封锁转换。
我看到了这篇文章
SSIS Full/Semi/Non Blocking Transformations 这说明转换是“异步”并具有“新缓冲区”。 有人也可以在什么上下文中解释我使用的异步字。它是否在输入中的记录数量的上下文中?
工会如何与这些条款相关联?
答案 0 :(得分:3)
SSIS缓冲区是工具用于通过转换移动行的工具。同步转换在一个缓冲区上运行,在完成它的工作时将其传递,以便下一个转换可以立即获得其任务。当它们同步地在缓冲区上操作时,下游转换可以在从上游转换传递时读取缓冲区的行。缓冲区是一个单独的对象 - 您不能将3个缓冲区传递给下游变换作为单个"单个"缓冲液中。
当您到达UNION ALL转换时,它上面的每个管道都有自己的缓冲区,因此SSIS需要将每个缓冲区中的行移动到一个新的缓冲区中以进行下游同步转换。此复制操作是异步",因为必须创建缓冲区并将数据从源缓冲区复制到其中,并且下游转换必须等待新缓冲区。如何完成此副本似乎没有记录,但我希望它可能只是将每个缓冲区中的行指针移动到新缓冲区中的数组或链表中。
同步/异步转换也在MSDN上有详细记录: https://msdn.microsoft.com/en-us/library/aa337074(v=sql.120).aspx
答案 1 :(得分:0)