理解控制流和数据流的一个入口是看他们如何运行的。一个控制流任务是一个最小的执行单位,它的运行结果有成功,失败,和完成,在运行它的下一个任务之前必须得到这些结果。在数据流任务中,转换时最基本的元素。一个转换任务和控制任务是有很大的区别的。转换任务之间是可以并行执行的,不必等待上一个转换任务执行完毕。
控制流和数据流之间的比较
控制流和数据流之间看上去很相似,但是他们有天壤之别。控制流不会处理组件之间的数据,它负责协调单独的组件单元之间的工作。这里有一些概念:
工作流协调
处理导向
顺序的或平行的任务的执行
异步处理
控制流任务可以顺序的执行,大多数时候他们会同时以这两种方式来执行。图1实例一个简单的控制流任务,它是线性执行的。这个包的执行顺序是连续的,同一时间只能运行一个任务。
图1
和控制流不同是,数据流可以发出分支,分割,再合并,并且是并行执行的。要注意的是即使他们和控制流任务一样也可以连成一条线,但是他们仍然是并行执行的。这里有一些数据流任务的概念:
信息导向
数据矫正和转换
协调处理
数据源和数据目的
和上面图1类似,图2实例一个类似的数据流任务,他们也是一一相连的。和图1中的任务项目,在图2中的一串转换中只执行了一个任务,并且这些转换都是并行执行的,换句话说可能有一行数据已经被存入到数据目的中,但是还是有数据源源不断地从数据源中流出,处理。
图2
数据流转换是同步执行的,所有的组件都是被一个流来控制。
SSIS包从开始到最后的执行时间
在一个控制流任务中可以包含多个数据流,一个包的执行时间从第一个控制流任务开始到最后一个控制流任务结束,包含中间可能的数据流任务。但是要注意的是尽可能使并行执行的任务多一些,集成服务会自动给予适当的优化,使执行时间最短。
图3展示一个包中的多个并行执行的任务。
图3
控制流中的任务会并行执行,这样执行的效率比图10-1中的线性执行要快一些。