加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SSIS:理解Data Flow Task 中的同步与异步等概念

发布时间:2016-08-16 15:31:38 所属栏目:MsSql教程 来源:站长网
导读:理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异
理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念

在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型。

Synchronous 同步组件

同步组件有一个非常重要的特征 - 同步组件的输出和它的输入共享同一个缓存,即输入多少行数据 输出就多少行数据。在同步转换的过程中,输入一行,输出一行,输入与输出同步,它们同时发生。

Asynchronous 异步组件

异步组件的特征就是它的输出使用的是一个新的缓存,它不会重用输入的缓存,输出的记录有可能比 输入多,也有可能比输入少。在异步转换的过程中,异步组件会要求新的缓存区才会执行处理,比如向 Sort 组件,它必须要在一个操作中处理整个行集。还有像 Merge, Merge Join 等合并操作,组件要先 检查各个输入的多个行,然后按照排序好的顺序来合并输入行。包括 Aggregate 组件,它需要新添加一 行来保存计算好的聚合值。

所以这样对比下来,通常情况下同步组件因为可以重用输入的缓存因此要比异步组件要快一些,因为 异步组件需要一块新的缓存来完成输出内容。

观察所有的数据源组件,它们都是异步类型,因为它们需要创建两个缓存,一个是成功的输出一个是 错误输出,所有的目标 Destination 组件都是同步的。

除了上面的两种分类之外,还可以将它们分为这三种类型:Non-blocking 非阻塞, semi-blocking 半阻塞和 Fully-blocking 全阻塞。

Non-blocking 非阻塞转换

非阻塞转换也被称为行转换,也属于同步转换组件。组件接收到一行数据,对这一行数据处理后再输 出。在组件的整个输出处理过程中不新建也不删除数据行。比如从上游 Source 中加载1000条数据,经 过非阻塞转换组件的时候,每接收一行数据就处理一行,处理完毕后就直接将这一行数据传递给下游组 件,不会等到所有的1000条数据处理完才交给下一个组件。

Semi-blocking 半阻塞转换

半阻塞的意思就是转换组件会控制输入行一段时间,比如组件接收到上游的1000行数据,有可能接收 到了10行或者100行数据就汇总一次,最后输出这10行或者100行数据,或者输出一行汇总的数据,所以 每次接到一行数据并不会立即处理输出。处理完这批数据输出之后,就可以继续接受其它行数据并处理 再输出,半阻塞转换也属于异步转换组件。

Fully-blocking 全阻塞转换

与半阻塞转换相同,都是属于异步转换组件。但是全阻塞转换组件会控制全部数据,上游来了1000行 数据,全阻塞组件需要接受完全部的1000行数据之后才会处理输出。比如像 Sort 或者 Aggregate 组件 ,它们需要接受了所有数据之后才会排序或者聚合,这个是很容易理解的。

SSIS:理解Data Flow Task 中的同步与异步等概念

SSIS 数据流 Data Flow 组件中的分类

SSIS:理解Data Flow Task 中的同步与异步等概念

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读