SSIS性能调优备忘

内容

1.    问题分析... 3

1.1      环境描述... 3

1.2      问题场景... 3

1.3      原因分析... 3

2.    解决步骤... 4

2.1      性能参数调整... 4

2.2      测试对比... 6

2.3      结论... 6

 

 

 

1. 问题分析

1.1             环境描述

服务器配置:IBM XSERIES_3755 Dual-Core AMD Opteron(tm) Processor 8212

CPU 2G X 4 Dual-Core        内存 8G   存储 本地SCSI

Windows 2003 SP2 R2企业版

OLTP数据库:Sybase 12.5

OLAP数据库:SQL Server2005企业版SP2

网络: 100M

 

1.2             问题场景

在某国有银行内部管理报表开发过程中,选定了SQL2005SSIS(SQL Server Integration Services)进行ETL数据采集和统计预处理,从网银Sybase OLTP数据库中抽取数据供OLAP数据分析和报表展现。但在初期使用过程中出现了数据抽取速度过慢的问题,以网银日志表为例,在未进行性能参数调整前,采集255,8374条共计923,560 KB的数据,需要一个半小时左右,CPU、内存、硬盘、网络的设备利用率都很低,由于参数设置不当导致无法发挥SSIS真实性能的现象明显。

 

1.3             原因分析

SSIS采用VS2005集成的开发环境,对数据采集的过程可进行可视化的定制开发,对数据量小的维度表(字典表)可同时并行抽取多个,以加快抽取速度,而对于大的事实表(业务表)可采用串行化抽取,是一个日志表,数据量较大,采用串行化方式提取。

在分析开发人员开发的SSIS 包时,主要发现几个与性能有关的参数值设置不当:

1.事实上在大数据量操作时,将大事务拆解成小事务是实践证明的最高效的处理方式,如把数据提交放在一个很大的事务中,就会出现事务保持和回滚需要更多的资源和时间,并造成物理内存不足,且更容易出错。

       2.线程做为操作系统争用CPU资源的系统对象,本身会花费一定的CPU时间进行线程切换与同步,所以线程数不应比物理CPU数量多太多,考虑到操作系统本身和其他运行中的软件对CPU的占用,甚至要略少于物理CPU

       3SSIS提供不检查check约束和触发器的快速加载方式(Fast load),可提高数据写入的速度,对于不需要严格审查的数据导入比较适用。

 

 

 

 

2. 解决步骤

2.1             性能参数调整

SSIS数据流引擎可以通过计算一行数据的估计大小来调整其缓冲区大小的任务。 引擎将估计的单行大小与 DefaultBufferMaxRows 值相乘以获得缓冲区大小的初步工作值。可计算出单行数据大小,乘以每次提交数据的行数,得到适当的缓冲大小

1、如果该结果大于 DefaultBufferSize 值,引擎将减少行数。

2、如果该结果小于内部计算的最小缓冲区大小,引擎将增加行数。

3、如果结果在最小缓冲区大小和 DefaultBufferSize 值之间,引擎将调整缓冲区大小,以尽可能接近估计行大小乘以 DefaultBufferMaxRows 值得出的结果。

4、默认缓冲区大小为 10 MB,最大缓冲区大小为 100 MB 默认最大行数为 10,000

 

参数

说明

DefaultBufferMaxRows   

1000

较小的事务会加速提交速度

DefaultBufferSize

10485760

为事务准备充足而适当的缓冲空间

EngineThreads

7

线程数贴近物理CPU个数

数据访问模式设置为:表或视图-快速加载,每批行数设为1000

2.2             测试对比

几组测试数据对比:

DefaultBufferMaxRows

DefaultBufferSize

EngineThreads

已用时间

数据量

数据大小

10000

20971520

5

2125.53

2558374

923560 KB

10000

10485760

5

1818.7

2558374

923560 KB

1000

10485760

6

220.891

2558374

923560 KB

1000

10485760

7

220.438

2558374

923560 KB

1000

10485760

8

236.047

2558374

923560 KB

 

最佳性能的测试指标为220(340),数据笔数255,8374条,数据约 900M

2.3             结论

测试对比结果表明,设置适合的缓冲大小,采用较小的事务提交,并使用适当的线程数可数十倍地提高SSIS包的ETL任务执行速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值