优化目标主要包括如下几方面:
1 优化平面文件
若是目标平面文件在某机器的共享目录下,则该机器最好是专门用于文件存储的,若是还应用于其余非文件存储任务,则会下降加载效率
若是Integration service运行在单节点,则可将该平面文件放置在该单节点所在本地,这样的话,本地数据加载会大大提高效率
2 删除索引及主键约束
若是目标表包含索引或主键约束,则会下降其加载效率,可暂时将它们删除,待加载结束后再重建还原
若是需按期进行索引及主键约束的删除和重建还原,每次运行session时可将该操做封装至如下地方:
1) pre-load和post-load的存储过程
2) pre-session和post-session的SQL脚本
若是必要的话,可以使用基于约束的加载(constraint-based loading)
3 增长数据库检查点间隔
每当数据库执行Check Point时,session都会进行等待,所以可经过如下两种方式减小检查点的频率:
1) 加大数据库检查点的间隔
2) 减小数据库检查点的数量
4 使用大容量负载(bulk load)
当insert大量数据时,使用bulk load会提高效率(可经过session的target的Target load type中配置)
bulk load时, Integration Service会忽略记录log信息,从而提升了加载速度。但也可能所以致使数据库没法回滚而没法还原数据
因此,在使用bulk load时,需事先权衡性能和数据还原的利害关系
bulk load时,可增大commit间隔来减小bulk load处理的次数,这样可提高性能,由于数据库每次commit以后都会开始一个新的bulk load
5 使用外部加载器
不一样目标数据库能够采用不一样的外部加载器
当目标表是Oracle时, 若是session使用多分区管道加载时,可以使用相同分区数建立目标表提高性能
6 避免死锁
若是Integration Service在尝试写入目标时遇到死锁,则死锁只影响同一目标链接组中的目标。Integration Service 仍然写入其余目标链接组中的目标
增长Integration Service用于写入会话中目标的目标链接组的数量
为会话中的每一个目标表使用不一样的目标链接组,为每一个目标实例使用不一样的数据库链接名称
可为每一个链接名称指定相同的链接信息
7 增长数据库网络包大小
增长网络包大小,以容许较大的数据包一次经过网络
不一样数据库,增长数据库网络包大小的方式也不一样
Oracle: 可在listener.ora和tnsnames.ora中设置增长数据库服务器网络包大小
8 优化oracle目标数据库
当优化数据库时,可检查数据库的存储子句, 空间分配, 回滚区间以及撤回区间
主要为如下几点:
1) 检查数据库对象的存储子句,确保数据库表有足够的initial和next值
2) 将表和索引数据存储在不一样的表空间中,最好存储在不一样的磁盘上
3) 确保回滚区间和撤回区间在合适的表空间中,它们最好在不一样的磁盘
由于加载数据时,数据库会使用回滚和撤回区间,同时回滚和撤回区间也要有合适的存储字句
4) 优化Oracle redo log,该log用于记录数据加载操做的,确保该log文件及其缓冲有足够的大小(可经过init.ora查看相关属性)
5) 当Integration Service运行在单节点且oracle数据库实例安装在与该节点相同机器上时,可以使用IPC协议链接数据库(经过在listener.ora and tnsnames.ora设置)
使用该协议可提升链接效率数据库