SSIS 数据流优化
一,数据流设计优化
数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化。
1,流,同时对数据进行提取,转换和加载操作
流,就是在source提取数据时,转换组件处理数据,同时destination加载数据,数据在不同组件之间,同时被处理。
所有的RDBMS操作都是同步的,基于集合的操作要求在将数据用于其他目的之前,该操作必须完成,这是由事务的原子特性决定的,然后数据流有流的特性,当数据流通过pipeline时,数据流task可以并行地处理链接,查询以及其他转换操作。在设计Data Flow时,要充分利用流的特性,限制同步过程。
例如,执行insert语句向Table1中插入数据,然后再运行update语句更新Table1,这意味着,直到insert脚本完成之前,是不能运行update语句的,insert 和 update 语句是同步的。
优化的设计方案是;设计一个数据流来实现与insert 语句相同的逻辑,同时使用转换组件实现与Update语句相同的逻辑。
这种设计方案不会使用TSQL的insert 和 update语句,但是使用Data flow Task的Source,conversion 和 destination,充分利用了数据流的流的特性。在数据提取的同时,转换组件对数据流进行转换,实现数据的“insert”和“Update”同时进行,减少整体的处理时间。
有时,使用RDBMS会更快,例如,如果表中有合适的index,使用order by 子句对数据进行排序,会比SSIS 排序转换要快很多。
2,SSIS Engine使用内存缓冲区来暂时存储数据流
SSIS Engine使用内存缓冲区来暂时存储数据流,对驻留在内存中的数据执行大多数的转换操作,这使得SSIS的数据处理效率非常高,应避免SSIS将数据流·驻留在Disk或其他IO速度非常低的存储介质上。
当Server内存不足时,SSIS就将缓冲区复制到Disk中,Disk IO的速度远低于RAM的IO 速度,这会导致package的运行速度将大大降低,其中最密集的内存转换时阻塞和半阻塞转换。所以,必须监控阻塞和半阻塞转换的内存使用情况,避免出现内存过低的情况。
二,数据流转换优化
1,缓冲区和执行树
针对数据流中的每个执行树,都使用了一个不同的缓冲区配置文件,这意味着执行树下游的组件可能会根据处理逻辑的不同而需要不同的Column set。因为数据流的缓冲区的性能直接和缓冲区的行宽相关联,窄缓冲区可以容纳更多的数据行,从而允许更高的数据流吞吐量。
上游执行树所使用的columns可能并不是下游执行树所需要的,当执行树中的列不在被任何下游执行树使用时,SSIS会提供相应的警告。每一个警告表示某一列在下游组件中不再被使用,英爱在初始使用后,从Pipeline中删除。任何异步转换输出的组件,都可以选择删除输出中的column。
2,Engine Thread
通过为数据流增加更多的执行线程,提高CPU的利用率。将数据流属性EngineThreads属性的值设置为大于执行树的数量和组件的数量,从而确保SSIS有足够的线程可供使用。
SSIS 数据流优化的更多相关文章
- SSIS技巧--优化数据流缓存
问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多 ...
- SSIS 数据流的执行树和数据管道
数据流组件的设计愿景是快速处理海量的数据,为了实现该目标,SSIS数据源引擎需要创建执行树和数据管道这两个数据结构,而用户为了快速处理数据流,必须知道各个转换组件的阻塞性,充分利用流式处理流程,利用更 ...
- SSIS 数据流的连接和查找转换
在SSIS的数据流组件中,SSIS引擎使用Merge Join组件和 Lookup组件实现TSQL语句中的inner join 和 outer join 功能,Lookup查找组件的功能更类似TSQL ...
- SSIS 数据流的错误输出
数据流任务对错误的处理,和控制流不同,在数据流中,主要是对于错误行的处理,一般通过Error Output配置. 1,操作失败的类型:Error(Conversion) 和 Truncation. 2 ...
- SSIS Design6:利用数据流
数据流利用内存来缓冲数据,并在内存中处理数据转换,由于内存的访问速度是非常快的,所以SSIS数据流转换性能是非常高效的.SSIS Engine将数据分批加载到内存中,当Data Flow将一批新的数据 ...
- SSIS 数据类型和类型转换
在进行ETL开发时,数据类型(Data Type)是最基础的,但也容易被忽略,楼主使用的SQL Server 版本是2012,用此博文记录,常用的SSIS数据类型和TSQL数据类型的映射.SSIS的数 ...
- SSIS Design3:并发执行
1,利用优先约束来并发处理数据,Data Flow Task 和 Data Flow Task 1 是并发执行的,而 Data Flow Task2 必须等到 Data Flow Task 和 Dat ...
- 第二篇 Integration Services:SSIS数据泵
本篇文章是Integration Services系列的第二篇,详细内容请参考原文. 简介SSIS用于移动数据.数据流任务提供此功能.因为这个原因,当介绍SSIS时我喜欢从数据流任务开始.数据流任务的 ...
- 第一篇 Integration Services:SSIS是什么
本篇文章是Integration Services系列的第一篇,详细内容请参考原文. Integration Services是一种在SQL Server中最受欢迎的子系统.允许你在各种数据源之间提取 ...
随机推荐
- Linux mount命令详解
mount命令用于加载文件系统到指定的加载点.此命令的也常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命 ...
- Android点击事件
Android点击事件 备注 全局实现View.OnClickListener 或许需要将MainActivity设置为public 注册事件 btn_login.setOnClickListener ...
- (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制
1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...
- ZT C语言实现字符串倒序
http://blog.chinaunix.net/uid-20788517-id-34777.html 分类: C/C++ 1 #include <stdio.h> 2 #includ ...
- .split("\n") 和 .strip("我是诗人的感叹")
s10='''诗人 学者 作家 # 这里面是有换行 "\n" 的, 要想变成一行, 删除strip不行,要用 split分开,这样就能变成一个列表,里面是各个字 ...
- 题解 P1868 【饥饿的奶牛】
题目链接:P1868 饥饿的奶牛 题面 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧 ...
- 从0开始搭建Element项目
第一步:安装 Node.js/NPM 下载Node.js:https://nodejs.org/zh-cn/download/ 下载安装即可. 第二步:安装 vue-cli 打开 cmd 创建,在命令 ...
- Python实现向s3共享存储上传和下载文件
#!/usr/bin/env python #-*- encoding: utf8 -*- import boto import boto.s3.connection from boto.s3.key ...
- 常用的npm命令
npm ls -g 列出全局安装的所有模块 npm ls webpack -g 查看全局安装的模块版本信息 npm view webpack versions 查看npm服务器上的全部版本信息 npm ...
- android scheme打开天猫,淘宝
直接上代码 Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); /* Str ...