kettle插入数据,速度慢

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】
4.0.0
【问题描述】
使用kettle插入数据,速度很慢。


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

请参考下面写入慢排查流程的文章先排查下:
https://asktug.com/c/newcomer/trouble-shooting

在TiDB的IO没达到100%时,大概率是kettle控件的问题,不知道能不能放外链,就简单说几条:
1、连接串参数调优
2、输出控件启用多线程
3、调大kettle的初始启动内存,速度在很大程度上和jvm可用内存有关

参考以上信息排查有解决吗?

没有解决,设置kettle启用多线程速度还是慢

Grafana监控里,IO达到100%了么?没达到的话,就还有提升空间

先看下 tidb 的监控,目前 duration 速度如何,判断下是 tidb 插入慢,还是并发太少。

duration在5微秒左右,qps上不去,300多

duration,commit在1s左右

io使用很低

spoon.bat中配置的启动内存是多大?8G和16G几乎相差一倍的速度

以下数据库连接参数也可以考虑添加,在IO达到100%时会有效果。

[useServerPrepStmts=false]
关闭服务器端编译,sql语句在客户端编译好再发送给服务器端。

[rewriteBatchedStatements=true]
mysql默认关闭了batch处理,通过此参数进行打开,开启批量写功能。这个参数可以重写向数据库提交的SQL语句,将多个相同insert语句合并为一个insert语句。

[useCompression=true]
压缩数据传输,优化客户端和MySQL服务器之间的通信性能。

如果非必要,非日常周期性的,还是建议用官方组件,比如 Mydumper+Loader,这是我在4.0版本切换时用的方式,速度杠杠滴

kettle 进行插入数据,可以尝试:提高并发数量,并每次提交的行数,200-500行,另外 kettle 本身有日志,可以看看 select 的时间长还是insert 的时间长,如果下游的 duration 不高,可能是 kettle 这一块没有给数据库足够的压力

太保守了,我这边每次提交3000+,5个线程,个人笔记本单机部署的TiDB,单线程能达到2000+的读写

@Hacker_8c7lz1BK 请参考以上帖子,增大线程数试试,如果还是无法提高,请反馈 grafana 监控的 over-view,tidb,tikv-detail 监控,多谢。 导入导出监控参考

大佬能否出一篇专栏,详细说说使用 kettle 导入数据到 tidb 的该如何进行优化配置。

:thinking:好的,收到。

1 个赞