优化之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的记录数尽量减少
优化之Joiner组件的更多相关文章
- 15、Jdbc的优化(BeanUtils组件)
Jdbc的优化! BeanUtils组件 自定义一个持久层的框架 DbUtils组件 案例优化 1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apach ...
- vue组件化之模板优化及注册组件语法糖
vue组件化之模板优化及注册组件语法糖 vue组件化 模板 优化 在 https://www.cnblogs.com/singledogpro/p/12054895.html 这里我们对vue.js ...
- 优化之Aggregator组件
Aggregator组件通常会降低性能,因为它们必须在处理数据之前对数据进行分组 Aggregator组件需要额外的内存来保存中间组结果 通过如下方式对Aggregator组件进行优化 简化group ...
- java jdbc的优化之BeanUtils组件
1. BeanUtils组件 1.1 简介 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作!即BeanUtils组件. BeanUtils ...
- 优化之XML组件
可在XML Parser 组件和XML Source定义中删除非project group,因为不需为这些非project group分配内存,但需要维护主键外键约束 ________________ ...
- 优化之Normalizer组件
Normalizer会产生记录,尽可能的将Normalizer组件靠近Target ---------------------------------------------------------- ...
- 注册界面的优化之ActionBar组件的应用之(二)ActionBar组件的事件处理
开发步骤: 重写父类中的一个方法onOptionsItemSelected实现ActionBar中的选项单击事件 //Register_Activity.java public class Regis ...
- 注册界面的优化之ActionBar组件的应用之(一)ActionBar组件的布局实现
开发步骤: 在res下menu文件夹中创建一个actionbar_menu_register.xml菜单资源文件 在资源文件中添加标签设置一个或多个ActionBar功能选项 //action ...
- 性能调优之Transformation
优化之Aggregator组件 优化之Custom组件 优化之Joiner组件 优化之Lookup组件 优化之Normalizer组件 优化之Sequence Generator组件 优化之Sorte ...
随机推荐
- James Munkres Topology: Theorem 20.3 and metric equivalence
Proof of Theorem 20.3 Theorem 20.3 The topologies on \(\mathbb{R}^n\) induced by the euclidean metri ...
- Spring,Spring MVC及Spring Boot区别
什么是Spring?它解决了什么问题? 我们说到Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代 ...
- java编程(1)——servlet和Ajax异步请求的接口编程(没有调用数据库的数据)
编程应用背景: 使用HttpServlet接口来编写一个动态登录的接口(需要在Tomcat容器发布) 登录的 LoginSample 类代码: package com.zhang.java; publ ...
- php 设计模式(转)
PhpDesignPatterns [PHP 中的设计模式] 一. Introduction[介绍] 设计模式:提供了一种广泛的可重用的方式来解决我们日常编程中常常遇见的问题.设计模式并不一定就是一个 ...
- 【ABP.Net】1.创建项目&介绍框架结构
既然已经打开这个页面了,我就不介绍什么是ABP了.哈哈哈,如果想知道,请移驾.反正我是不说. 1.首先打开https://aspnetboilerplate.com/Templates 下载所需要的A ...
- 使用Jsoup实现java爬虫(非原创)
1,查看页面源代码,使用css或者JQuery选择器方式或元素节点选择 例如: 或者写成:Elements elements1 = Jsoup.connect("http://jb.999a ...
- 关于resharper激活
resharper 是一款非常强大的vs辅助开发插件,提供了很多快捷操作功能,本人已经离不开它了,但是resharper总会遇到lincese过期,需要激活的问题,现在提供以下方式,仅供参考 1.打开 ...
- BZOJ3497 : Pa2009 Circular Game
令先手为$A$,后手为$B$,将相邻同色棋子合并成块,首先特判一些情况: 如果所有格子都是满的,那么显然$A$必败. 否则如果所有块都只有一个棋子,那么显然平局. 枚举$A$的第一步操作,如果可以使得 ...
- C++ 三大特性:封装、继承、多态性
要讲 封装.继承.多态就必须从面向对象说起 开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称为该软件的问题域.面向对象的编程语言将客观事物看作具有属性和行为(或服务)的对象,通过抽象找出同 ...
- 在虚拟机中安装Centos系统
1.首先下载VMware 2.然后可以去http://mirrors.aliyun.com下载映像ISO 3.打开VM,点击创建新的虚拟机 4.选择典型模式 5.稍后安装操作系统 6.选择你所要安装的 ...