informatica性能调优小结

使用informatica做ETL的时候,大表(超千万)的性能十分值得关注,每秒输出行数至少要上千在实际项目中才开始有可用性,
简单的说是下面几点
1
目标表可先禁用不必要索引,加快插入速度,一般只留下主键的unique所有就可以了.
2
源表使用过滤条件减少行数.必要的时候可分批导入.过滤条件必须要加索引.如果多个条件使用联合索引.对源表sql最好事先explain plan一下.因为oralce自动选择的索引很可能不是我们希望的最优选择,必要的在sql中加上hint .如/*+index(表名 索引名)*/来提示oracle使用我们指定的索引,这个事情在表建有多个索引的时候经常会发生
3
lookup大表的话必须使用sql override ,限制sql条件.注释掉默认的order by字句,为lookup组件设置cache size,和index cache size.一般来讲一百万左右的数据100MB的cache就可以了.index一般设为cache的一般即可,在设cache的时候好像最大只能设300MB左右.再大就会报错,而且如果lookup数据量很小的话设大缓存也会报错,如果lookup的表数据量很小最好cache不要设置超过50MB,Lookup cache persistent 一般建议选中.如果这个lookup需要执行多次.而lookup的表不变的话.这个像是根据代码去名称.或是取一个属性可大幅加快执行速度.
4
aggregator组件.joiner组件,尽量使用sorted input ,并且指定cache大小.最大设到500Mb左右.注意etl服务器是32位cpu的话一个session最大只能使用2G内存,这个2G是手工设定的cache容量加(Maximum Memory Allowed For Auto Memory Attributes和Maximum Percentage of Total Memory Allowed For Auto Memory Attributes中的较小值)
5
组件尽量服用.都设为resuable
6
选择update else insert是在update失败以后insert到数据库.在update strategy组件前先lookup目标表.确定好这条数据是update还是insert到目标表,会比更新失败再插入快,插入数据会提高5倍左右.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据