shiliye

数据源的瓶颈通常发生从数据库读取数据的时候,原因通常如下:
  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)

相关文章:

  • 2021-04-27
  • 2021-11-14
  • 2021-08-10
  • 2021-08-29
  • 2021-09-01
  • 2021-11-11
  • 2021-09-26
  • 2020-10-19
猜你喜欢
  • 2021-12-04
  • 2021-05-25
  • 2021-11-18
  • 2021-11-16
  • 2019-03-04
  • 2019-03-27
  • 2022-01-03
相关资源
相似解决方案