打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于kettle工具提高表输出写入速度(每秒万条记录)

概述

最近用kettle时发现输出到数据表太久,1小时才写了3万条数据,平均每秒速度为8条,基于此,做一下改进。


优化1:优化网络连接属性

mysql表输出的时候出现减速的原因可能是因为网络链接的属性设置

在此处添加参数:

useServerPrepStmts=false rewriteBatchedStatements=true useCompression=true characterEncoding=utf8


优化2:开启多线程

kettle转换在运行时,每个步骤可被看成一个带着输入、输出行队列的工作线程,每个线程是并行运行的,当数据化是有效时即处理。kettle允许针对每个独立步骤手工定义其线程数。如果转换有一个瓶颈步骤,该步骤有多个实例同时运行可以加快处理速度。可以通过检查每个步骤的输入、输出队列及行/秒的处理性能找到候选的瓶颈步骤。如果某步骤有满输入队列,空输出队列,并每秒处理行数低,这些因素往往决定了整个转换的性能,从而找到瓶颈步骤。这些因素的数据在kettle执行“Step Metrics”视图中可以看到。

右击问题步骤,选择“change number of copies to start..”并输入合适的线程数,这时当你运行转换时,你将注意到多个运行的实例,每个实例在视图中有自己的输入、输出队列。


优化3:调整队列大小

KTR是一个流式的处理过程,步骤与步骤之间的数据传递是通过缓存来完成的,调整缓存的大小可以对KTR的运行产生明显的影响。

Edit —> Settings —> Miscellaneous —> Nr of rows in rowset (缓存的记录行数)

这个值的大小需要根据机器的配置来选择,如果可用内存足够,一般的设置是10000,也就是缓存10000行数据,如果内存比较紧张,可以将该值调小一些,保证不会占用过量内存。


优化4:提高每次表输出的提交量

适当加大每次commit的数量。


最后还可以用kettle并发处理job,因为满足需求了,所以就不继续了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java 强引用、 软引用、 弱引用、虚引用 - Ferrerooo 成长 - JavaE...
支付平台架构设计评审核心要点与最佳实践
阿里巴巴2021春招一面面经
【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(3)
Disruptor的并发优化
Java多线程引发的性能问题以及调优策略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服