Thr*_*onk 12 sql-server ssis ssis-2012
有几个博客声称将 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 转换是一种非阻塞转换,但在我看来它是部分阻塞的。
请不要使用按类型分类的转换列表的链接来回答。这个问题的答案有望采用更严格的方法来证明正确答案。
由于部分阻塞和阻塞转换会将数据移动到新的缓冲区,而不是在缓冲区上操作的非阻塞,我怀疑解决方案是在转换执行期间观察缓冲区的创建,但我不确定(a ) 如果这会产生明确的答案和 (b) 如何做到这一点。
我相信非阻塞转换不会导致新的执行树开始,因此答案可能在于记录 PipelineExectionTrees 和 PipelineExecutionPlan。这可以区分同步和异步,但不能区分部分阻塞和完全阻塞。
阻塞操作必须等到所有行都已被查看并处理后才能开始填充缓冲区。
部分阻塞的操作将数据写入新的缓冲区,只有在填充每个缓冲区(通常不到 10,000 行)后,该操作才会由下一个操作处理。
当处理每一行时,非阻塞操作可以使后续操作在同一缓冲区上工作。
但许多文本将“部分阻塞”称为“非阻塞”,因为这种行为比“阻塞”更接近“非阻塞”。
您应该能够通过观察数据流运行并查看每个点的数字何时增加来判断发生了什么。