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有足够的线程可供使用。

时间: 2024-08-26 17:16:41

SSIS 数据流优化的相关文章

SSIS技巧--优化数据流缓存

问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多关于这种情况的优化方案,例如扩大缓存大小等.虽然也能快一点,但是仍然远远比直接在SSMS中查询的速度满的多.究竟是什么原因导致的呢? 解决 首先这个数据流性能是有很多因素决定的,例如源数据的速度.目标库的写入速度.数据转换和路径数量的使用等等.但是,如果只是一个很简单的数据流,那么提高缓存的容量即可

某大型银行电子渠道报表系统SSIS ETL优化报告

1. 问题分析 1.1 问题场景 在生产环境下,从电子渠道的多个交易系统通过SSIS(SQL Server Integration Services)进行数据服务平台的ETL数据抽取时出现性能问题.在初期使用过程中出现了数据抽取速度过慢和系统资源占用过高的问题,除数据库基础架构建设存在优化可能外,SSIS参数未做面向生产环境硬件的优化也是一个重要原因,导致无法正常发挥SSIS真正性能. 1.2 原因分析 SSIS采用VS2005集成的开发环境,对数据采集的过程可进行可视化的定制开发,对数据量小的

SSIS Design6:利用数据流

数据流利用内存来缓冲数据,并在内存中处理数据转换,由于内存的访问速度是非常快的,所以SSIS数据流转换性能是非常高效的.SSIS Engine将数据分批加载到内存中,当Data Flow将一批新的数据加载到内存时,下游转换组件会对已经加载到内存中数据进行处理,同时,目的组件会将处理完成的数据加载到Target Table中,数据的读取,转换和加载同时进行,这就是数据流的优势. 1,利用数据流,能够减少暂存和昂贵的disk IO 操作 在大量数据的ETL系统中,Disk IO是系统性能的bottl

第一篇 Integration Services:SSIS是什么

本篇文章是Integration Services系列的第一篇,详细内容请参考原文. Integration Services是一种在SQL Server中最受欢迎的子系统.允许你在各种数据源之间提取.转换和加载(ETL)数据,以任何你能想到的编程方式更改数据.你可以用SSIS做下面操作:->执行ETL(提取.转换.加载)操作->传输数据->复制数据库对象->执行FTP操作->处理文件"我之前从来没用过SSIS…"你确定你从来没有使用过?是否对下面界面感到

初识SQL Server Integration Services (SSIS)

1 什么是微软的SQL Server Integration Services(SSIS) 微软SSIS是构建企业级数据集成和数据转换解决方案平台.您可以使用集成服务来解决复杂的业务问题通过复制或下载文件,发送电子邮件以响应事件,更新数据仓库. 清洗和挖掘数据和管理 SQL Server 对象和数据.包可以单独或与其他包一起复杂的业务需求.集成服务可以提取和转换数据从各种各样的来源,如 XML 数据文件. 平面文件和关系数据源,然后将数据加载到一个或多个目标数据载体中. SSIS包括一组丰富的内

使用SSIS Slow Changing Transformation组件管理缓慢变化维

最近尝试用SSIS自带的 Slow Changing Transformation组件处理缓慢变化维,看到有一篇文章写的很详细,就按照步骤进行操作同时进行翻译.原网址来自:Managing Slowly Changing Dimension with Slow Changing Transformation in SSIS. 介绍 作为数据库专家或者ETL的开发者你可能偶尔会碰到需要维护和管理缓慢变化唯的场景.在SQL Server中有多种方法来实现,最简单的是使用SSIS 数据流组件中的Slo

深入理解PHP opcode优化

1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opcode,最后经解释器模拟机器指令来执行每一条opcode. 在上述整个环节中,生成的opcode可以应用编译优化技术如死代码删除.条件常量传播.函数内联等各种优化来精简opcode,达到提高代码的执行性能的目的. PHP扩展opcache,针对生成的opcode基于

【读书笔记】《编译原理》第一章 引论

第一章 引论 第一章 引论 1 语言处理器 2 一个编译器的结构 3 程序设计语言发展历程 5 编译技术的应用 1.1 语言处理器 编译器compiler:将源程序翻译成目标程序,生成目标代码快速,错误诊断效果差. 解释器interpreter:用户提供源程序和输入,产生输出,较慢,错误诊断效果好. java语言处理:Java源程序->字节码bytecode->虚拟机解释执行 语言处理系统:源程序--预处理器preprocessor--经过预处理的源程序--编译器--目标汇编程序(便于输出调试

SPSS Clementine 数据挖掘入门1

SPSS Clementine是Spss公司收购ISL获得的数据挖掘工具.在Gartner的客户数据挖掘工具评估中,仅有两家厂商被列为领导者:SAS和SPSS.SAS获得了最高ability to execute评分,代表着SAS在市场执行.推广.认知方面有最佳表现:而SPSS获得了最高的completeness of vision,表明SPSS在技术创新方面遥遥领先. 客户端基本界面 SPSS Clementine(在此简称clementine)在安装好后会自动启用服务,服务端的管理需要使用S