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. Vim实用命令

    [n]yy:从当前行复制n行 [n]p:粘贴n次 [n]dd:删除当前行往下的n行 /  : 向后查找 ?:向前查找 u → undo 撤销上一操作 <C-r> → redo 0 → 开启 ...

  2. org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

    org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actua ...

  3. 互联网产品设计常用文档类型-BRD、MRD、PRD、FSD (

    BRD Business Requirements Document,商业需求文档.这是产品声明周期中最早的问的文档,再早就应该是脑中的构思了,其内容涉及市场分析,销售策略,盈利预测等,通常是和老大们 ...

  4. 8、android代码优化技术记录

    1.length.length().size的优化 举例: int array_one[] = {1,2,3,4,5,6,7,8,9,10}; int array_two[] = {1,2,3,4,5 ...

  5. 浅谈IT认识

    我理解的IT       新华电脑学院,引领IT潮流.这句耳熟能详的广告语,从小就在我的记忆里深存,当看到别人QQ用黑客技术刷了好多钻,于是乎无比的向往这种黑客技术,后来网上购物更是在互联网上一疯而起 ...

  6. shell编程之echo命令

    Linux echo命令不能显示文件中的内容.显示字符串或者变量功能说明:显示文字.语 法:echo [-ne][字符串]或 echo [--help][--version]补充说明:echo会将输入 ...

  7. ios 流媒体 资料

    (1)“Real-Time Streaming Protocol (RTSP)”比较官方的资料(链接). (2)“ffmpeg”在百度百科的简介(链接). (3)“ffmpeg”的官网:http:// ...

  8. WP手机升级WIN10被PIN码锁定

    WP8.1手机升级WIN10后,需要输入PIN码(不知道啊),多次输入(1234,0000,8888 ...)后被锁定,无法使用手机(郁闷), 重启无数次,提示由于多次输入PIN码,手机无法使用(天啊 ...

  9. 项目分析(map复习)

    有段时间没看map里面的东西了,刚才看发现功能上增加了一些,在来复习了一次流程初始化每个map建立线程,这个线程有两个功能,1.处理GS发过来的包 2.驱动map里面的定时器GS发过来的包是存在m_g ...

  10. Post 的数据被截断

    原因: Form 域 POST 提交数据 100K(可能不是这个值) 限制的解决方案   因为微软这个限制是对表单内每个域(第一个控件)的限制.问题的解决办法是,对于一个需要发送大数据的域,在提交表单 ...