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中最受欢迎的子系统.允许你在各种数据源之间提取 ...
随机推荐
- 基于NSString处理文件的高级类
基于NSString处理文件的高级类 我已经把处理文件的类简化到了变态的程度,如果你还有更简洁的方法,请告知我,谢谢! 使用详情: 源码: // // NSString+File.h // Maste ...
- 用HashSet存储自定义对象
案例 package cn.itcast_02; import java.util.HashSet; /* * 需求:存储自定义对象,并保证元素的唯一性 * 要求:如果两个对象的成员变量值都相同, ...
- php请求页面将返回的页面发送email
<?php require_once 'CLI_config.php'; require_once dirname(__FILE__).'/../../../../common/framewor ...
- Call to undefined function mysqli_connect() in xx.连接数据库出现mysqli_connect()未定义的问题。
这个是我在执行php代码的时候出现的一个错误,我在网上查了好久,也按照网上常用的方法去修改,都没有效果. 例如:1.新建一个php文件: <?php print phpinfo(); ?> ...
- B/S网络概述
B/S网络架构 随着Web2.0时代的到来,互联网的网络架构已经从传统的C/S架构转变到更加方便快捷的B/S架构.这样的转化简化了人们上网的方式,也加速了互联网行业的发展. B/S架构的好处: 1.客 ...
- vue项目用nodejs实现模拟数据方法
1)在项目根目录(如demo)中创建一个文件夹,如base,将项目中所有的前端文件全部放到base文件夹中,此时项目demo下只有一个文件夹base 2)通过cmd进入命令窗口,直接执行npm ins ...
- BZOJ1189:[HNOI2007]紧急疏散EVACUATE(最大流,枚举)
Description 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一 块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是 ...
- Java代码输出到txt文件(申请专利贴源码的必备利器)
最近公司在申请专利,编写不少文档,项目的代码量实在是过于庞大.如果一个一个的复制粘贴虽然能够完成,但是对于程序员而言实在没有这个必要.shell或者python就能解决这个问题.由于我个人对于shel ...
- 【转】Python数据处理(四舍五入、除法部分)
转自:https://www.cnblogs.com/junyiningyuan/p/5338378.html 关于除法 传统除法 对两个整数进行除的运算,同时结果会舍去小数部分,返回一个整数.但如果 ...
- java集合---迭代器iterator
一:ArraryList 最终继承超级接口Collection,Colection接口继承Iterator接口. public interface Collection<E> exten ...