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. 团队小组开发nabc分析

    我们团队开发的项目为:牛逼的手电筒 NABC模型: 1.N:现在每个人几乎走哪,干什么都会拿着手机,而现在年轻人晚上在外面的也不少,所以手机里安装一个手电筒的APP还是很有必要的. 2.A:这学期正在 ...

  2. 【bzoj1007】[HNOI2008]水平可见直线

    1007: [HNOI2008]水平可见直线 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 5932  Solved: 2254[Submit][Sta ...

  3. HDAO one error

    对normal target设置的background clearcolor 导致 远处天空 通过了 normalRejectTest 所以要对normal target单独设置 不能通过test的 ...

  4. linux centos yum 安装 rar

    linux yum安装rar时,可能会出现无资源的错误,只需把配置好资源即可,具体操作如下: 1.# vi /etc/yum.repos.d/dag.repo 2.将以下内容写入文件中 [dag] n ...

  5. Shell日期时间和时间戳的转换

    Gitlab的备份文件是以时间戳显示的,类似:1438624820_gitlab_backup.tar 为了更易于阅读,想把文件名转换成日期格式:2015-08-04_gitlab_backup.ta ...

  6. JAVA float double数据类型保留2位小数点5种方法

    /** * Java 两个整数相除保留两位小数,将小数转化为百分数 * java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数,必须将两整数其一或 ...

  7. delphi快捷键

    分类 快捷键 解释 备注 组 件 设 计 类 Escape 选择当前组件容器     Shift + Click 选择多个组件:选择窗体     Tab 选择下一个组件     Shift + Tab ...

  8. URAL 1586 Threeprime Numbers(DP)

    题目链接 题意 : 定义Threeprime为它的任意连续3位上的数字,都构成一个3位的质数. 求对于一个n位数,存在多少个Threeprime数. 思路 : 记录[100, 999]范围内所有素数( ...

  9. 2014多校第一场 E 题 || HDU 4865 Peter's Hobby (DP)

    题目链接 题意 : 给你两个表格,第一个表格是三种天气下出现四种湿度的可能性.第二个表格是,昨天出现的三种天气下,今天出现三种天气的可能性.然后给你这几天的湿度,告诉你第一天出现三种天气的可能性,让你 ...

  10. http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html

    http://blog.sina.com.cn/s/blog_5b9b4abe01017638.html