Look up:

Look up组件做的事情和SQL SERVER中的inner和outer hash join差不多。

但是look up每次只能有两张表参与。

在FULL-CACHE模式下,两个source的其中一个会被完整地load进内存,然后另一个source每次load一部分数据进到缓冲区再做匹配。

Look up可以有三个输出:1)matched rows;2)unmatched rows;3)error rows;

Cache Connection Manager (CCM)可以把Look up的cache存起來

在使用Look up的时候,因为Look up在cache其中一张表的时候是会block整个flow的执行的,也就是说整个执行的过程需要等待这张表的数据都被加载到内存里面才会继续往下走,这种情况下,当出现一张dim表和一张fact做look up的时候,或者说一张小表和一张大表做look up的时候,确保小表被cache。

Look up本身是没有多线程跑的:

There is no opportunity for the Lookup Transformation to implicitly perform in an SMP (or
scale-out) manner. The same applies to the Merge Join Transformation — on suitable hardware
it will run on a separate thread to other components, but it will not utilize multiple threads
within itself. --《Professional SQL Server Integration Services 2012》

其实Merge Join和Look up各有各的优劣。Merge Join虽然不要求某张表的数据都加载到内存,但是数据要事先排序,这个耗了CPU而且数据排序的过程也是要在内存中进行的。而look up的hash其实也是一个计算过程,而且重要的是这个hash join的运算必须要求整张表的数据都进到内存里面,这样会占用很大内存空间。根本没有说那个好那个坏。Merge Join寄希望于sort栏位有索引而节省CPU开销,而look up寄希望于cache的那张表不要太大,不然内存压力很大。就跟SQL Server的hash join和merger join一个道理,一般在没有索引的情况下,大表间的join都是hash优于merge,sort的开销太大了。

------------------------------------------------------------------------------------------------------------------------------------------

Merge Join:

Merge Join做的事情差不多和sql server的inner join、outer join一样,但是它不会和look up预先加载数据到内存,也不会有cache mode,它要求输入的两个源需要事先排序。你需要把源的IsSorted选项设置为True以及两个源的SortKeyPosition配置成和你要Join的key的位置一致,而且源数据的排序也必须要一致,不然数据不可能对上的,这个Merge Join就可以跑了。它不会有look up那样提供了三个输出,如果要实现look up那种unmatched的数据分流,就需要在merge后面加一个Conditional Split组件来实现。

Merge Join要比Look up节省更多的内存使用,因为Look up在Full-Cache模式下需要把其中一个输入的数据都加载到内存里面。但是Merge join两个输入源在Merge Join开始连接匹配之前要求双方把数据都准备好,这样一个缺点就是,如果A输入只有5行数据,B输入有1000000行数据,即便A输入的所有数据在B输入的前5行中已经找到了匹配,这种情况下B输入剩下的所有数据行还是需要再被继续加载。

这里有篇博文专门讲Look up:http://www.cnblogs.com/biwork/p/4245978.html

还有一篇讲了Merge Join:http://www.cnblogs.com/biwork/p/3308846.html

Data Flow ->> Look up & Merge Join的更多相关文章

  1. SSIS Data Flow 的 Execution Tree 和 Data Pipeline

    一,Execution Tree 执行树是数据流组件(转换和适配器)基于同步关系所建立的逻辑分组,每一个分组都是一个执行树的开始和结束,也可以将执行树理解为一个缓冲区的开始和结束,即缓冲区的整个生命周 ...

  2. SSIS ->> Control Flow And Data Flow

    In the Control Flow, the task is the smallest unit of work, and a task requires completion (success, ...

  3. 微软BI 之SSIS 系列 - Merge, Merge Join, Union All 合并组件的使用以及Sort 排序组件同步异步的问题

    开篇介绍 SSIS Data Flow 中有几个组件可以实现不同数据源的数据合并功能,比如 Merger, Merge Join 和 Union All.它们的功能比较类似,同时也比较容易混淆,下面是 ...

  4. 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念

    开篇介绍 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型. 同步与异步 Synchronous and Asynchr ...

  5. [转]Data Flow How-to Topics (SSIS)

    本文转自:http://technet.microsoft.com/en-us/library/ms137612(v=sql.90).aspx This section contains proced ...

  6. Union All ,Merge,Merge join 区别

    本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/07/17/2594709.html SSIS Data Flow 中有几个组件可以实现不同 ...

  7. Sort merge join、Nested loops、Hash join(三种连接类型)

    目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接):首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed ...

  8. Data Flow ->> Union All

    Wrox的<Professional Microsoft SQL Server 2012 Integration Services>一书中再讲Merge的时候有这样一段解释: This t ...

  9. Data Flow ->> Script Component

    和Control Flow中的Script Task非常类似,不同的是Script Component是Per-Row的执行类型.打个比方,在Script Component中加入两个Output的字 ...

随机推荐

  1. svg绘制蓝色星空,月亮,旋转灯塔

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  2. xml基础学习笔记02

    接着上次的xml笔记01 ,记录一下如何DOM创建xml 一.由于没有特意来写博客,都是在程序中用注释的方法记录笔记,整理过来难免格式错误,排版什么的,大家好事看不懂就仔细看给出的代码加上注释,一定会 ...

  3. 安装Windows7出现:”安装程序无法创建新的系统分区 也无法定位系统分区“ 终极解决方案

    参考:地址 解决方法: 1.先格式化一下你要装的那个盘,然后,拔出U盘,啥也别动,只拔出U盘就行,再装上U盘,然后刷新一下[选硬盘那里的高级选项中有格式化和刷新],再选择要安装的硬盘点下一步,OK了, ...

  4. Careercup - Google面试题 - 6283958983589888

    2014-05-06 11:31 题目链接 原题: Find the k-th Smallest Element in Two Sorted Arrays. I followed the algori ...

  5. bzoj 3039 悬线法求最大01子矩阵

    首先预处理每个F点左右,下一共有多少个F点,然后 对于每个为0的点(R),从这个点开始,一直到这个点 下面第一个R点,这一区间中的min(左),min(右)更新答案. ps:我估计这道题数据有的格式不 ...

  6. 0910 noip模拟

    教师节快乐: T1:勇士闯魔塔,是一道很裸的莫队题目,但在老师的催促下,出题人@syq同学修改了第一题,使之成了一道送分题,全暴力水过: T2:第二题是一道预处理+分组背包,考试中,忘了分组背包怎么敲 ...

  7. VSTO Word2003 添加菜单栏, 添加工具栏

    直接上代码了:   Microsoft.Office.Core.CommandBar menuBar; CommandBarButton ccbtn = null;        CommandBar ...

  8. 华农js抢课神器

    又到了华农选课的时候,服务器估计就受不了,每天奔溃几次,这次选课贪心了点,竟然选了5门,好吧,我承认我只中了1门,什么??刚刚换课给同学马上就被人抢了?我来告诉你原因吧,最近发现一位大神写了一份js脚 ...

  9. WCF服务端与客户端时间匹配问题

    当服务端部署的WCF服务服务在被客户机调用时,如果显示: 错误,展开后,详细错误为:An error occurred when verifying security for the message ...

  10. ios frame、bound和center定义及使用场景总结

    frame:指的是视图在父视图的坐标系统中的大小和位置. bound:指的是视图在视图本身的坐标系统中的大小(位置起点是原点). center:指的是视图在父视图坐标系统中的中心点. frame和bo ...