kettle 数据提取效率提升
最近发现KETTLE抽数越来越慢,特别是增量INSERT/UPDATE的时候,速度已经达到了令人发指的地步(从一个400W数据规模的表中每天增量量抽取30W数据的TRASFORMATION 竟然要20个小时!!!!读取速率是5条/s......),这个情况是在我的KETTLE工具从3.2升级到7.0版本后发现的,(以前也慢,只是还能接受,升级之后已经到了不改不行的地步了),但是KETTLE是进步的,所以原因还是要从自身找起。
目前为止我发现的导致KETTLE抽取数据慢有以下几个原因:
A:SPOON 启动时候内存较小,在spoon.bat这个启动文件中,配置的有JVM的内存XMX,("%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="- Xms8192m" "-Xmx8192m" "-XX:MaxPermSize=4096m"),默认这个是256M,512M 256M, 其中Xms是指JVM初始分配的堆栈的内存,Xmx是指JVM分配的堆栈的内存 (JAVA代码能涉及到的存储数据变量的内存)最大是多少,所以XMS必须要<= XMX,XX:MaxPermSize,是指JVM给自己分配的非堆栈内存(供虚拟机程序自己开销)我的因 为是在服务器上跑,因此改成了8192M\8192M\4096M,这个改不能是无限的加大,需要考虑总的内存大小,一般来说网上参考是最大堆栈内存不超过总内存的3/8有的也说是 一半,总之得有个度。
B:抽数的源数据库关键字段没有索引,以我这张表为例,我每天需要按照日期(data_update_date)从DB2增量抽取更新数据,但是这个字段没有建索引,因此也会导致抽数慢。
C:抽数的源数据库关键字段索引在SPOON里面失效,给大家看两段SQL就知道了:
SQL1:select TO_CHAR(TO_DATE(t_date,'YYYYMMDD')+1,'YYYYMMDD') from delta_table where t_name='~~~'
SELECT * FROM SAPCP1.ZCSSDH053 WHERE REPORT_CREATE_DATE >= ?
SQL2:select t_date from delta_table where t_name='~~~'
SELECT * FROM SAPCP1.ZCSSDH053 WHERE REPORT_CREATE_DATE > ?
两段SQL执行的都是相同的数据提取过程,但是在REPORT_CREATE_DATE 字段建立索引的情况下,SQL1比SQL2快20倍。原因是用 > 号的时候,索引会失效,而用>=则不会。
于是我在网上搜索了这种明明应该走 但是并没有走索引的情况(以下是粘贴的)
使用<> (有的时候单独的使用< 或者>的时候也有可能)
like的时候不能确定最前面的字符 也就是把’%_’的时候
单独使用复合索引的非前导列
表没有分析
字符类型不匹配 发生了显示的或者隐式的转换或者对索引列进行了运算
使用了 not in 或者 not exist
基于cbo时全表扫描代价小
b-tree索引is not null的时候会走,is not null的时候不会走 位图的时候都会 复合索引的时候 is not null会 is null时要看前导列
D:目的地数据库表的索引太多,这个原因显而易见,因为插入数据的时候会重新更新索引表,索引太多,插入时候会变慢。
E:插入流程中数据COMMIT过程太频繁,数据插入的COMMIT太频繁也是很影响效率的,,30W的数据提交300次和提交30次速度显然是不一样的,只要你的设置的内存能暂时容得下插入的数据,COMMIT可以尽量设高一点(kettle有限制不能超过50000)
F:INSERT/UPDATE 过程与
表输入,这两个流程肯定是后者快很多,但是笔者在实际过程中会遇到一个问题就是,万一ETL抽数流程的某个环节发生了错误,导致ETL后面的流程DUMP掉,要么没插入要么部分插入,这样的话,肯定是没有更新关键字段的。(关键字段更新是放在所有流程最后一步),这样的话,当笔者解决掉这个问题重新启动流程,如果重头开始,对于INSERT/UPDATE字段没什么问题,数据重复会进行更新,但是对于表输入的话,就会有问题,昨天写入的数据已经存在了,这样不作处理肯定还会报错。KETTLE
7.0
解决了这个问题,在JOB层设计的时候提前设定好失败数据回滚的操作,在回滚的操作里面删掉已经插入的数据,这样的话用表输入就没有后顾之忧了。
最后,30W数据进过以上优化时间从20个小时缩短到0.5个小时~~我暂时发现这些优化方式,各位高人有其他方法欢迎交流~~~!!!!
kettle 数据提取效率提升的更多相关文章
- 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)
作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- kettle 数据抽取时会出现 无法插入NULL
kettle 数据抽取时会出现 无法插入NULL,其实是空字符串,原因是kettle默认不区分空字符串和NULL. 解决办法: 修改kettle.properties 文件:
- kettle 数据迁移 (转)
最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...
- kettle 数据迁移
最近在公司搞一个项目重构迁移问题,旧项目一直在线上跑,重构的项目则还没上线.重构之后数据库表结构,字段,类型等都有变化,而且重构的数据库由oracl改为mysql.这样就设计到数据迁移问题,别人推荐下 ...
- Kettle数据同步速度调优记录
Msyql到Vertica 1.mysql中在openshop 数据库中选择其中一个300W左右数据的表 create table ip_records_tmp_01 AS SELECT * FROM ...
- ETL kettle 数据调取防止意外停止处理
pentaho kettle是目前使用比较广泛的一种etl工具 但是在使用的时候如做定时任务 会存在如果任务异常停止会发生数据不准或者丢失数据的情况 这种情况在<Pentho Kettle So ...
- kettle数据同步
通过kettle实现两张表的数据同步,具体设计如下:
- Kettle数据抽取解决方案
一. Kettle介绍 1. Kettle简介 ETL即数据抽取(Extract).转换(Transform).装载(Load)的过程.Kettle的中文翻译为水壶.Kettle以元数据驱动的方式提供 ...
- KETTLE数据上传
1. KETTLE简介 一种ETL工具,ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(l ...
随机推荐
- CRT软件光标不闪烁
点击 选项->会话选项 然后在取消即可,就有了闪烁的光标,应该是个bug 也可以把后面的浏览器之类的东西缩小一下,也会恢复
- Spring AOP实现原理-动态代理
目录 代理模式 静态代理 动态代理 代理模式 我们知道,Spring AOP的主要作用就是不通过修改源代码的方式.将非核心功能代码织入来实现对方法的增强.那么Spring AOP的底层如何实现对方法的 ...
- CSS------div无法覆盖图片全部如何处理
如图: 代码:(需要将li中的样式属性display设置为inline-block) //获取Url地址中的参数 function getParameter(name) { //正则表达式 var r ...
- 007.SMB其他应用
一 目录权限 系统权限需要对共享目录生效 samba服务器权限也会对共享目录生效 当用户过多权限交叉的时候,建议使用系统权限控制共享目录权限,而不建议采用samba权限来控制 例如: [work] p ...
- NOSQL快速入门
NoSql是一个很老的概念了,但对自己来说,仍然是一个短板,果断补上. 首先通过几个简单的例子来了解NOSQL在国内的情况(2013年左右的数据,有些过时),比如新浪微博,其就有200多台物理机运行着 ...
- cropper.js实现图片裁剪预览并转换为base64发送至服务端。
一 .准备工作 1.首先需要先下载cropper,常规使用npm,进入项目路径后执行以下命令: npm install cropper 2. cropper基于jquery,在此不要忘记引入jq,同时 ...
- Codeforces Round 542 (Div. 2)
layout: post title: Codeforces Round 542 (Div. 2) author: "luowentaoaa" catalog: true tags ...
- Fisher–Yates shuffle 洗牌算法(zz)
1,缘起 最近工作上遇到一个问题,即将一组数据,比如[A,B,C,D,E]其中的两个B,E按随机排列,其他的仍在原来的位置: 原始数组:[A,B,C,D,E] 随机字母:[B,D] 可能结果:[A,B ...
- Beta冲刺准备
过去存在的问题: 界面不够美观 推荐不够人性化 代码不够符合开闭原则 我们已经做了哪些调整/改进: 本来想引入springAndroid,但看了下google的官方文档,不建议引入第三方框架:代码重构 ...
- Android之Android WebView常见问题及解决方案汇总
如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 Android WebView常见问题解决方案汇总: 就目前而言,如何应对版本的频繁更新呢,又如何灵活多变 ...