• 优化之Joiner组件


    Joiner组件在运行时需要额外的内存空间处理中间结果,因此会影响性能
    可通过查看Joiner performance计数器来决定Joiner组件是否需要优化

    通过如下方式优化Joiner组件
      将Master Source指定为具有较少重复键值的Source
        以Joiner组件的join条件作为group key对数据进行分组,去重后的数据可以作为唯一键值
        当Integration Service处理排序后的joiner转换时,它会每次缓存符合100个键的行
        如果Master Source包含多个具有相同键值的行,Integration Service必须缓存更多的行,并且性能可能会降低

        比如,join条件是Master.id=Detail.id and Master.name=Detail.name, 则连接条件是id,name
        然后Integration Service会执行select id,name from Master group by id, name,其结果集就是唯一键值对的结果集
        Integration Service每次会从上述结果集中选出100个(id,name)对,并将符合该100个(id,name)对的记录写入缓存
        如果Master中符合这100个(id,name)对的记录有越多,则写入缓存的数据量就越大,则性能就会越慢

      将Master Source指定为行数较少的源
        在session运行时,Joiner组件将Detail Source的每一行与Master Source进行比较
        Master Source的行数越少,连接比较的迭代次数就越少,性能就越好
        同理,Detail Source的行数越少,每次迭代时遍历的次数也越少

      尽可能在数据库端进行join操作
        将join操作放在数据库端而不是在session里会提高性能
        但有时需要join不同数据源,如平面文件,不同类型数据库,此时需要在session里进行join操作
        join的类型同样也会对性能有影响,normal join的性能优于outer join并且返回相对较少的记录数

        可通过如下方式在数据库端进行join:
          配置pre-session store procedure,在存储过程里进行数据库表的join操作
          Source Qualifier的sqlquery里写脚本进行数据库表的join操作

      join之前尽可能对input数据排序
        如果input数据排过序,则将磁盘读写最小化,因而提高了性能
        如果input数据没有排过序,则可将Master Source的记录数尽量减少

  • 相关阅读:
    metasploit 常用命令汇总
    MSF命令 收集
    【转载】虫师『性能测试』文章大汇总
    渗透测试、取证、安全和黑客的热门链接
    Hackers top in China
    国外整理的一套在线渗透测试资源合集[转载]
    Filezilla中文字符文件看不到或显示乱码的解决办法
    Filezilla 多目录的访问设置
    ISAPI在IIS7上的配置
    数据库主体在该数据库中拥有 架构,无法删除解决方法(转)
  • 原文地址:https://www.cnblogs.com/shiliye/p/10694624.html
Copyright © 2020-2023  润新知