kettle性能及效率提升
来源:互联网 发布:网络大型游戏大全 编辑:程序博客网 时间:2024/05/15 03:58
Kettle数据处理的过程中难免会遇到性能瓶颈,因此性能及效率的提升成为摆在面前的问题,因此笔者罗列一些常用的优化建议。
- kettle优化
- 索引的正确使用
- 数据抽取SQL优化
kettle优化
- 尽量使用数据库连接池;
- 尽量提高批处理的commit size;
- 尽量使用缓存,缓存尽量大一些(主要是文本文件和数据流);
- Kettle 是Java 做的,尽量用大一点的内存参数启动Kettle;
- 可以使用sql 来做的一些操作尽量用sql ;
- Group , merge , stream lookup ,split field 这些操作都是比较慢的,想办法避免他们.,能用sql 就用sql;
- 插入大量数据的时候尽量把索引删掉;
- 尽量避免使用update , delete 操作,尤其是update , 如果可以把update 变成先delete , 后insert ;
- 能使用truncate table 的时候,就不要使用delete all row 这种类似sql合理的分区,如果删除操作是基于某一个分区的,就不要使用delete row 这种方式(不管是delete sql 还是delete 步骤),直接把分区drop 掉,再重新创建;
- 尽量缩小输入的数据集的大小(增量更新也是为了这个目的);
- 尽量使用数据库原生的方式装载文本文件(Oracle 的sqlloader , mysql 的bulk loader 步骤);
- 尽量不要用kettle 的calculate 计算步骤,能用数据库本身的sql 就用sql ,不能用sql 就尽量想办法用procedure , 实在不行才是calculate 步骤;
- 要知道你的性能瓶颈在哪,可能有时候你使用了不恰当的方式,导致整个操作都变慢,观察kettle log 生成的方式来了解你的ETL操作最慢的地方;
- 远程数据库用文件+FTP 的方式来传数据 ,文件要压缩。(只要不是局域网都可以认为是远程连接)。
索引的正确使用
在ETL过程中的索引需要遵循以下使用原则:
当插入的数据为数据表中的记录数量10%以上时,首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。
避免在索引列上使用函数或计算,在where子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。
避免在索引列上使用 NOT和 “!=” ,索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到NOT和 “!=” 时,就会停止使用索引转而执行全表扫描。
索引列上用 >= 替代 >
高效:select * from temp where deptno >=4
低效:select * from temp where deptno >3
两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。
数据抽取的SQL优化。
- Where子句中的连接顺序。
- 删除全表是用TRUNCATE替代DELETE。
- 尽量多使用COMMIT。
- 用EXISTS替代IN。
- 用NOT EXISTS替代NOT IN。
- 优化GROUP BY。
- 有条件的使用UNION-ALL 替换UNION。
- 分离表和索引。
更过文章请点击熊猫TEAM
0 0
- kettle性能及效率提升
- kettle性能及效率提升
- kettle 数据提取效率提升
- javascript模拟 C#中的StringBuilder,提升JS中字符串拼接的效率及性能
- Jquery优化效率 提升性能解决方案
- Jquery优化效率 提升性能解决方案
- Jquery优化效率 提升性能解决方案
- Jquery优化效率 提升性能解决方案
- Jquery优化效率 提升性能解决方案
- JS执行效率与性能提升方案
- 提升CSS的性能和效率
- HashMap详解及性能提升
- 多线程性能及效率问题
- 多线程性能及效率问题
- 多线程性能及效率问题
- 多线程性能及效率问题
- 多线程性能及效率问题
- 多线程性能及效率问题
- CFLAGS was changed 错误 LDD3
- poi导出Excel
- [教程]如何使用V7包中ActionBar(Eclipse版)
- Python直接访问Postgresql,实践通过
- 如何做好站外引流--天下人招聘
- kettle性能及效率提升
- Yii pdateCounters更新操作
- jquery 鼠标跟随提示
- vi 命令大全
- js 正则表达式 验证 a/b/c 这种类型数据
- 在Android上实现Junit单元测试的四部曲
- 取得随机数的视图
- Boost文本序列化和二进制序列化的效率比较
- 一直都这样