Target优化

本文介绍提升数据加载效率的方法,包括优化平面文件存储、删除索引及主键约束、增加数据库检查点间隔、使用大容量负载等策略,并针对Oracle数据库提供特别优化建议。

优化目标主要包括以下几方面: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 load5 使用外部加载器
  不同目标数据库可以采用不同的外部加载器
  当目标表是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设置)
     使用该协议可提高连接效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值