数据源的瓶颈一般发生从数据库读取数据的时候,缘由一般以下:
1) 脚本的查询效率低下
2) 数据库网络包过小
如何断定源瓶颈
经过在session log中读取thread statistics断定源的瓶颈
若是read thread花费的时间大大多于write thread和transformation thread,则可说明性能瓶颈在于目标数据库
若是session是从源文件读取数据,则性能瓶颈可能不在源数据库
若是session是从关系型数据库读取数据的,可经过以下方法判断源的瓶颈网络
使用filter组件
在每个source qualifier组件后追加一个filter组件,将条件设为false(如1=2)确保没有数据经过
若是session运行的时间仍是没有变化,则可断定瓶颈在源
建立测试用的read mapping
建立测试用的read mapping,并将查询与其余组件隔离,建立步骤以下:
1) 将原来mapping复制
2) 在复制的mapping里,只保留sources, source qualifiers和任何其余custom joins或queries组件
3) 移除全部中间数据转换处理的组件
4) 将source qualifiers组件链接至目标文件
若是session运行的时间仍是没有变化,则可断定瓶颈在源
使用数据库查询
直接在数据库端运行查询脚本
若是脚本运行的时间很长,则可断定瓶颈在于源的查询脚本
如何解决源的性能
1) 当Integration Service从文件读取数据,可设定读取每行数据时的最大字节数
2) 让DBA优化查询脚本
3) 增长数据库网络包大小
4) 追加索引和约束
5) 若是一个数据库查询在两个时间测量之间有很长的延迟,能够考虑使用优化器(optimizer hint)session