SSIS 数据流执行与优化全解析
1. 高级数据流执行概念
在数据流处理中,理解执行树和缓冲区管理至关重要。执行树是基于数据流组件(转换、源和目标)之间的同步关系进行的逻辑分组。分组由异步组件输出划分,一个执行树完成后,新的执行树开始。
例如,在一个包含多个异步输出组件的中等复杂数据流中,执行树从源组件开始,在每个异步转换处开启新的执行树。执行树编号从 0 开始,可通过管道日志识别。
当 SSIS 执行包时,缓冲区管理器会根据包内的执行树定义不同的缓冲区配置文件。同一执行树使用的所有缓冲区定义相同。在为每个执行树定义缓冲区配置文件时,SSIS 缓冲区管理器会考虑执行树中使用的所有转换,并在缓冲区中包含执行树中任何时刻所需的每一列。
比如,在某个执行树路径中,源组件使用了 CurrencyCode
、 CurrencyRate
、 AverageRate
、 EndofDayRate
四列,派生列转换添加了 Average_Sale
和 Audit_Date
两列,查找转换又添加了三列,那么该执行树使用的缓冲区将分配九列,即使某些列在初始组件中未使用。
当缓冲区用于执行树并到达异步组件的转换输入时,数据不再需要,因为已传递到新的执行树和新的缓冲区集,此时缓冲区管理器可将分配的缓冲区用于数据流中的其他目的。
此外,进程线程调度器在有可用线程且执行树需要大量处理器资源时,可将多个线程分配给单个执行树。每个转换可接收一个线程,每个源组件也会获得单独的线