1.背景

背景:在mysql数据库中进行数据迁移(表之间迁移,字段转换),发现表的数据量大的时候,kettle对表的读写操作的速度很慢,并且是达到一定数据量以后速度会特别慢,数据量小的时候读的速度是很快。

2.kettle执行测速

2.1 读写数据速度测试

5000条数据读写速度测试:8min24s 即 504s

20000条数据读写速度测试: 16min32s 即 992s

200000条数据读写速度测试,任务直接失败,跑不起来。

3.优化方向

3.1 修改数据库连接参数

打开表输入和表输出的数据库连接添加以下参数:表输入或表输出=>编辑数据库连接=>选项

命名参数 参数说明
useCompression true 在传输时开启数据压缩 ,提高传输效率
rewriteBatchedStatements true 让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率
useServerPrepStmts false 让数据库重排Insert语句,合并多条插入语句成为一条,提交插入效率

5000条数据的读写结果:3.1s

20000条数据读写速度测试: 11.6s

200000条数据读写速度测试: 2min18s 即138s

经过数据库参数的修改,读写效率明显提升86%以上。

3.2 kettle修改spoon.bat的运行内存大小(修改数据参数的基础上)

在kettle安装目录下编辑Spoon.bat文件,找到以下参数:

# 默认值
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
# 修改值(根据自己电脑配置修改)
"%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS= "-Xmx4096m" "-XX:MaxPermSize=4096m"
# 参数详解
# "-Xms4096m":配置java虚拟机堆区内存初始内存分配的大小 未配置
# "-Xmx4096m":配置java虚拟机堆区内存可被分配的最大上限
# "-XX:MaxPermSize=4096m":配置java对非堆区分配的内存的最大上限

注意:
开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。在配置之前一定要慎重的考虑一下自身软件所需要的非堆区内存大小,因为此处内存是不会被java垃圾回收机制进行处理的地方。并且更加要注意的是最大堆内存与最大非堆内存的和绝对不能够超出操作系统的可用内存。

提交记录数量更改为10000,即每次提交10000条记录

5000条数据的读写结果:3.2s

20000条数据读写速度测试: 10.6s

200000条数据读写速度测试: 2min1s 即121s

对比下的结果,在资源充足的情况下,数据库的连接参数对于读取速度影响较大。

3.优化的效果(读取840万数据的耗时)

8488225条数据读写速度测试: 1h 55min 10s 即6910s

4.总结

使用kettle时必须要注意点:

1、检查连接数据库的驱动版本,要做到jar包的版本和数据库版本尽量接近;

2、创建数据库连接的url中必须加上以下两个参数:

?autoReconnect=true&failOverReadOnly=false

3、创建数据库连接的参数中必须加上以下三个参数:(用于增加数据写入速度)

useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true

4、创建数据库连接,如果使用的连接池,必须设置maxIdl值较大:

5、必须根据kettle软件所在的硬件,修改spoon.bat(window)或spoon.sh(linux)的内存大小:

kettle优化之提高MySQL读写速度相关推荐

  1. kettle优化抽取数据速度_Kettle性能优化

    Kettle性能优化是一个系统工程,不仅涉及工具本身的优化,更涉及ETL工具之外的诸多因素,比如,ETL要读取数据库,那么目标DMBS的性能,SQL语句,网络等相关因素都影响到执行效率.根据Kettl ...

  2. kettle mysql 参数,Kettle集群及Mysql参数调整

    <Kettle集群及Mysql参数调整>由会员分享,可在线阅读,更多相关<Kettle集群及Mysql参数调整(10页珍藏版)>请在人人文库网上搜索. 1.1 Kettle 集 ...

  3. 6条策略提高mysql查询速度 潇湘博客

    6条策略提高mysql查询速度 1,表设计一定要优化,冗余数据最少,少用连接查询.如果在实际应用中,使用了极其复杂的连接,子查询,则数据表的设计得要重新考虑了. 2,尽量用char而不是varchar ...

  4. 提高mysql性能的开源软件

    今天发现一个开源软件,看介绍可以提高mysql的性能,这个东西就是Google的开源TCMalloc库,于是拿来装了下看看效果. 这个软件下载地址是:http://code.google.com/p/ ...

  5. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  6. mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...

    mysql数据库优化课程---15.mysql优化步骤(mysql中最常用最立竿见影的优化是什么) 一.总结 一句话总结:索引优化最立竿见影 索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分 ...

  7. DL之DNN优化技术:利用Dropout(简介、使用、应用)优化方法提高DNN模型的性能

    DL之DNN优化技术:利用Dropout(简介.入门.使用)优化方法提高DNN模型的性能 目录 Dropout简介 Dropout使用 Dropout应用 Dropout简介 随机失活(dropout ...

  8. DL之DNN优化技术:利用Batch Normalization(简介、入门、使用)优化方法提高DNN模型的性能

    DL之DNN优化技术:利用Batch Normalization优化方法提高DNN模型的性能 目录 Batch Normalization简介 Batch Normalization入门 Batch ...

  9. ckks方案优化最好的_站群如何优化才能提高SEO效果?站群优化方案有哪些?

    在竞争激烈的市场环境中,很多企业为了能够"崭露头角",总是想尽方法让自己的网站处在较前的位置,获得更多曝光的机会.然而,互联网的竞争大,能取胜的手段也是各式各样的,如站群优化是大多 ...

最新文章

  1. 关于EF中批量添加的个人探索
  2. python程序员在公司都是做什么的-程序员是做什么的?工资待遇怎么样?
  3. 【♻️markdown之一次编写,到处使用♻️】markdown文件转word
  4. 在wine里安装了IE6
  5. java readline最后一行_java – 如何在reader.readLine()中检测第一行和最后一行?
  6. 教你玩转CSS 提示工具(Tooltip)
  7. 【10.23头条】阿里云存储负责人吴结生:安全可靠是云存储立身之本, 智能技术将激活存储技术新变革...
  8. ASP.NET Session丢失问题原因及解决方案[转]
  9. 小齐是如何提高自己的「编程能力」的?
  10. 前端面试宝典-技巧篇
  11. WINCC AUDIT审计组建教程
  12. 飞机大战(源码+素材)
  13. 致敬科比,JS手写贪吃蛇
  14. android自定义速度仪表盘,自定义View实战:汽车速度仪表盘
  15. 航天恒星系统集成项目组
  16. 仿京东商城商品分类搜索功能
  17. flash怎么强制gc_Adode Flash初级教程
  18. SwiftUI iOS 完整项目之基于CoreData构建购物计划App(教程含源码App Store上线app)
  19. android相框_如何将旧的Android平板电脑变成自动更新的数码相框
  20. 【第二周项目3】体验复杂度

热门文章

  1. Java字符拼成图片
  2. 关于ITIL证书更新的重要通知
  3. html页面设计参考文献英文,网页设计参考文献(国外英文资料).doc
  4. 5、C++结构体的使用
  5. 《超智游戏》:鬼影投手·棒球1号位
  6. 算法导论(三)--分治法
  7. 最有效的穴位按摩减肥法
  8. 鞋底php是什么材质,鞋底用EVA材料更好还是橡胶呢?
  9. html创建文件自动命名,批量改名大师批量重命名HTML文档教程
  10. 量子计算机是什么?量子计算机和传统计算机之间有什么区别?