修改kettleDB连接设置

1. 增加批量写的速度:
useServerPrepStmts=false  
rewriteBatchedStatements=true  
useCompression=true
2. 增加读的速度:
useServerPrepStmts=true
cachePrepStmts=true

参数说明:

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

2)rewriteBatchedStatements=true  ,开启批量写功能

将会使大批量单条插入语句:

INSERT INTO t (c1,c2) VALUES ('One',1);
INSERT INTO t (c1,c2) VALUES ('Two',2);
INSERT INTO t (c1,c2) VALUES ('Three',3);

改写成真正的批量插入语句:

INSERT INTO t (c1,c2) VALUES ('One',1),('Two',2),('Three',3);

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

如果为true,sql会采用占位符方式发送到服务器端,在服务器端再组装sql语句。

占位符方式:INSERT INTO t (c1,c2) VALUES (?,?),(?,?),(?,?);

此方式就会产生一个问题,当列数*提交记录数>65535

时就会报错:Prepared statement contains too many placeholders,

这是由于我把“提交记录数量”设为10000,而要插入记录的表字段有30个,所以要进行批量插入时需要30*10000=300000  > 65535 ,故而报错。

解决方案:

方案1:把DB连接中的 rewriteBatchedStatements 给设置为false(或者去掉),不过这个操作会影响数据的插入速度。

方案2:更改表输出的设计。确保30个输出字段的和提交记录数量的乘积不超过65535。比如把提交记录数量由10000更改为450(30*2000=60000< 65535)

当然我们的目的是为了提高数据库写速度,所以当rewriteBatchedStatements =true时useServerPrepStmts=false必须配合使用。

mysql参数调优可以参考如下文档

https://dev.mysql.com/doc/connectors/en/connector-j-reference-configuration-properties.html

数据丢失问题

性能提升后,遇到另外个问题,86万数据丢失了130多条,kettle无报错,各种mysql参数设置之后都无效果,耗时近一天,最终查到是重复数据导致。

估计是因为重复数据在mysql写不进去导致该批次数据写失败,但是kettle无报错这个就比较坑。

解决办法就是:1)取消数据表主键或者唯一索引 ,当然这是治标不治本的做法。2)根本的做法就是排查重复数据,从源头杜绝重复数据

参考文档:

https://blog.csdn.net/smooth00/article/details/69389424?utm_source=itdadao&utm_medium=referral

http://www.jackieathome.net/archives/169.html

转载于:https://www.cnblogs.com/cl1234/p/9627833.html

kettle大数据量读写mysql性能优化相关推荐

  1. 大数据量时Mysql的优化要点

    原文章 http://www.open-open.com/lib/view/open1430901016179.html 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的 ...

  2. 大数据量时Mysql的优化要点[转]

    转自:http://www.open-open.com/lib/view/open1430901016179.html 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各 ...

  3. iMobile中加载大数据量的矢量数据性能优化方法有哪些

    作者:xinxin 随着移动技术的发展,GIS行业中移动项目越来越多.在移动应用中不仅要对接在线的服务数据,还要加载各种本地的业务数据,GIS数据的量一般很大,而移动设备的内存有限,加载本地大数据量的 ...

  4. 大数据存储系统I/O性能优化技术研究进展

    大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...

  5. AntDB 落地某省电信大数据中心项目的性能优化案例分享

    亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...

  6. spring Batch实现数据库大数据量读写

    spring Batch实现数据库大数据量读写 博客分类: spring springBatchquartz定时调度批处理  1. data-source-context.xml Xml代码   &l ...

  7. 大数据量数据库设计与优化方案

    一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...

  8. Java8 Stream 数据流,大数据量下的性能效率怎么样?

    今日推荐程序猿惯用口头禅,你被击中了吗? 常见代码重构技巧(非常实用) B站,牛啊. 程序员缺乏经验的 7 种表现 2021年4月程序员工资统计:平均14596元,南京程序员收入挤进一线. 来源:bl ...

  9. eBay 大数据平台的 HDFS 性能优化实践

    导读 HDFS作为大数据的底层存储系统,其性能处理效率关乎着大量与集群数据相关的计算任务的运行.HDFS的性能效率主要由其内部的核心服务NameNode所决定.此次eBay Hadoop team将分 ...

最新文章

  1. 无人驾驶矿山赛道单笔最大融资:踏歌智行完成2亿元B轮融资
  2. 超图学习综述: 算法分类与应用分析
  3. 基于fiddler的网络爬虫校园网自动登陆系统
  4. 458. 可怜的小猪
  5. vb6在后台将窗体保存到图片_如何将寺库网多个商品图片一键分类保存到一个目录...
  6. Net设计模式实例之代理模式(Proxy Pattern)
  7. 一些弹出框的用法例子(二)
  8. Educational Codeforces Round 64 Div.2 D - 0-1-Tree
  9. Facebook 公开 APT32 身份,疑为越南本地一家 IT 公司
  10. JavaScript中的“ new”关键字是什么?
  11. python能做什么-普通小白学会Python到底具体能做什么呢?
  12. Mybatis注解: SQL语句映射@Select @Insert @Updata @Delete @SelectKey
  13. 简易银行管理系统(C语言)
  14. 重返设计模式--命令模式
  15. 自然数学-自然常数e
  16. 杉车网数据报告:2019年,新能源汽车渐入佳境
  17. 计算机毕业设计ssm基于B_S的汽车售后服务管理系统e48c4系统+程序+源码+lw+远程部署
  18. [‘1‘,‘2‘,‘3‘].map(parseInt)结果讲解
  19. 电容电压、电感电流为什么不能突变?
  20. vue中因数据延迟导致echarts无法渲染问题

热门文章

  1. git提交输入账号和密码_GitHub-本地项目提交至GitHub
  2. 怎么用python自动注册_python selenium自动化(二)自动化注册流程
  3. mysql mof_mof提权
  4. oracle数据加载控制文件格式,oracle数据加载的几种常用方法
  5. mysql dml_详解MySQL---DDL语句、DML语句与DCL语句
  6. ORA-02291: 违反完整约束条件 - 未找到父项关键字 解决方法
  7. java的sdk在哪个文件夹_我的计算机中的Java SDK文件夹在哪里? Ubuntu 12.04
  8. python极简主义_XData: 为 Python 之禅写的极简主义数据验证工具
  9. java万年历计算法定节假日,java获取中国节假日
  10. 导出对象_从代数几何到导出代数几何:形变与逼近