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. 10、android学习资源整理

    1.github上整理好的开源工程 https://github.com/Trinea/android-open-project 2.最流行的android组件大全 http://colobu.com ...

  2. 6、android开发中遇到的bug整理

    1.使用actionProvider时出现的问题 bug复现: 解决方案: //import android.support.v4.view.ActionProvider; import androi ...

  3. 《我是IT小小鸟》读书笔记

    转眼间,大学的第二学期悄悄来临了,老师给我们布置了一道原本我以为很无趣的题目----写<我是IT的读书笔记>,但是我读了<我是IT小小鸟>这本书后,令我受益匪浅:五个人,每个人 ...

  4. Codeforces Round #130 (Div. 2) C - Police Station 最短路+dp

    题目链接: http://codeforces.com/problemset/problem/208/C C. Police Station time limit per test:2 seconds ...

  5. bzoj 2002 LCT

    LCT最基础的题,就用到了一个ACCESS操作 首先我们将这个绵羊弹飞的情况看成一颗树,那么假设X点被弹飞到 Y点,那么Y为X的父亲节点,弹飞的话父亲节点为n+1(虚设) 那么每个询问就是询问X点到根 ...

  6. nginx+php+flight 构建RESTFul API

    配置: Nginx: conf目录下nginx.conf配置文件. 第44行改为:root   D:/wwwroot/www; 第45行改为:index  index.html index.htm i ...

  7. sublime text3使用心得及个人配置 sublime常用快捷键大全

    下载好后:1.安装package controlimport urllib.request,os; pf = 'Package Control.sublime-package'; ipp = subl ...

  8. mac mysql connection

    随着网络日益发展还有os x用户的增多,有可能会需要在自己的x系统中运行mysql+php环境,比如架设网站或者测试之类.简单步骤如下: 1.下载MySQL 5.x 发行版,解压并安装映像中的两个安装 ...

  9. LUCAS 定理

    原来一张图就就能证明:C(N,M)%P,p是素数. 简直太炫酷 先膜拜会 #include<iostream>#include<cstdio>#include<ctime ...

  10. 利用URLRewriter.dll 实现ASP.NET实现伪静态

    大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有坏,对于访 ...