ETL工具kettle的性能优化

性能调优在整个项目中尤为重要。对于初级开发人员往往都不知道如何对性能进行调优。其实性能调优主要分为两个方面:一方面是硬件方面的调优,一方面是软件方面的调优。本文章主要介绍Kettle方面的性能调优以及效率的提升。

一、Kettle组件调优

1. commit size

表输出的提交记录数量(默认1000),具体根据数量大小来修改。

ETL工具kettle的性能优化_第1张图片

修改前速度(7447/s):ETL工具kettle的性能优化_第2张图片
修改后(7992/s):ETL工具kettle的性能优化_第3张图片

2. 数据库连接调参

基于上层优化方案继续调优

useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true

ETL工具kettle的性能优化_第4张图片
添加参数后(20361/s):
ETL工具kettle的性能优化_第5张图片

3. Kettle并行

右击 “START组件” 勾选Run Next Entries in Parallel
ETL工具kettle的性能优化_第6张图片
选择I understand

ETL工具kettle的性能优化_第7张图片
最终图:
ETL工具kettle的性能优化_第8张图片
结果图(可以看到每秒的表输出量已经起飞~~~):
70W的数据仅用30S的时间就插入完成。
ETL工具kettle的性能优化_第9张图片

二、Kettle参数调优

  1. 调整JVM大小进行性能优化,修改Kettle定时任务中的Spoon脚本。
参数 描述
-Xmx1024m 设置JVM最大可用内存为1024M。
-Xms512m 设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2g(JVM) 设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss128(JVM) 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
Spoon参数位置:if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=128m"

三、 Kettle其他优化

  1. 尽量使用SQL语句、尽可能的不适用组件。
  2. Kettle是基于Java制作的,尽可能的用较大的内存来启动Kettle
  3. 尽可能的使用同一主机来进行ETL操作(本地-本地/服务器-服务器),本地-服务器传输网络波动会有一定的影响
  4. 使用数据库资源库便于对作业、转换的管理与应用。
  5. 尽可能的输入少量的数据集(没用的字段不抽取)
  6. 插入大量数据时把索引删掉,待数据全量插入完成后再进行创建索引。

你可能感兴趣的:(数据仓库,mysql,数据库,大数据,sql,flink)