优化Source主要包括以下几方面:
1 优化sqlquery
在mapping中,通常会在Source Qualifier组件中使用sqlquery读取数据,则优化通常包括以下几点:
1) 如果在Source Qualifier中的sqlquery中有多个表,可对它们使用oracle优化器
如果sqlquery中只select单独一个表,可使用order by或group by子句
2) 分析sqlquery中的查询语句,并对其创建优化器和索引
3) 使用优化器让sqlquery尽快返回结果而非把所有结果同时返回,因为Integration Service可并行处理查询返回的记录
4) sqlquery中如果有group by或order by子句, 则可针对group by和order by对应的字段创建索引
5) 可使多个sqlquery并行运行
2 使用条件过滤器
由于缺少索引,数据库端的filter可能会影响性能,因此可使用PowerCenter的条件filter提升性能
是否使用PowerCenter的条件filter取决于session,如果多个session同时从一个源读数据,可能会提升性能
但有些session可能会更快一些如果使用数据库端的filter,因此在决定使用哪个filter之前需要进行测试
3 增加数据库网络包大小
增加网络包大小,以允许较大的数据包一次通过网络
不同数据库,增加数据库网络包大小的方式也不同
Oracle: 可在listener.ora和tnsnames.ora中设置增加数据库服务器网络包大小
4 连接oracle数据库源
当Integration Service运行在单节点且oracle数据库实例安装在与该节点相同机器上时,可使用IPC协议连接数据库(通过在listener.ora and tnsnames.ora设置)