kettle大数据量读写mysql性能优化
修改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性能优化相关推荐
- 大数据量时Mysql的优化要点
原文章 http://www.open-open.com/lib/view/open1430901016179.html 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的 ...
- 大数据量时Mysql的优化要点[转]
转自:http://www.open-open.com/lib/view/open1430901016179.html 如今随着互联网的发展,数据的量级也是撑指数的增长,从GB到TB到PB.对数据的各 ...
- iMobile中加载大数据量的矢量数据性能优化方法有哪些
作者:xinxin 随着移动技术的发展,GIS行业中移动项目越来越多.在移动应用中不仅要对接在线的服务数据,还要加载各种本地的业务数据,GIS数据的量一般很大,而移动设备的内存有限,加载本地大数据量的 ...
- 大数据存储系统I/O性能优化技术研究进展
大数据存储系统I/O性能优化技术研究进展 肖利民,霍志胜 北京航空航天大学计算机学院,北京 100191 摘要:大数据存储系统的I/O性能是影响大数据应用整体性能的关键因素之一,总结了当前在存储系统架 ...
- AntDB 落地某省电信大数据中心项目的性能优化案例分享
亚信科技AntDB 落地某省电信大数据中心项目的性能优化案例分享 某省电信大数据中心项目采购了一套亚信科技AntDB 3.1分布式数据库,2018年8月初开始建设,建设周期一个月.9月份投入运行后,至 ...
- spring Batch实现数据库大数据量读写
spring Batch实现数据库大数据量读写 博客分类: spring springBatchquartz定时调度批处理 1. data-source-context.xml Xml代码 &l ...
- 大数据量数据库设计与优化方案
一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. ...
- Java8 Stream 数据流,大数据量下的性能效率怎么样?
今日推荐程序猿惯用口头禅,你被击中了吗? 常见代码重构技巧(非常实用) B站,牛啊. 程序员缺乏经验的 7 种表现 2021年4月程序员工资统计:平均14596元,南京程序员收入挤进一线. 来源:bl ...
- eBay 大数据平台的 HDFS 性能优化实践
导读 HDFS作为大数据的底层存储系统,其性能处理效率关乎着大量与集群数据相关的计算任务的运行.HDFS的性能效率主要由其内部的核心服务NameNode所决定.此次eBay Hadoop team将分 ...
最新文章
- 无人驾驶矿山赛道单笔最大融资:踏歌智行完成2亿元B轮融资
- 超图学习综述: 算法分类与应用分析
- 基于fiddler的网络爬虫校园网自动登陆系统
- 458. 可怜的小猪
- vb6在后台将窗体保存到图片_如何将寺库网多个商品图片一键分类保存到一个目录...
- Net设计模式实例之代理模式(Proxy Pattern)
- 一些弹出框的用法例子(二)
- Educational Codeforces Round 64 Div.2 D - 0-1-Tree
- Facebook 公开 APT32 身份,疑为越南本地一家 IT 公司
- JavaScript中的“ new”关键字是什么?
- python能做什么-普通小白学会Python到底具体能做什么呢?
- Mybatis注解: SQL语句映射@Select @Insert @Updata @Delete @SelectKey
- 简易银行管理系统(C语言)
- 重返设计模式--命令模式
- 自然数学-自然常数e
- 杉车网数据报告:2019年,新能源汽车渐入佳境
- 计算机毕业设计ssm基于B_S的汽车售后服务管理系统e48c4系统+程序+源码+lw+远程部署
- [‘1‘,‘2‘,‘3‘].map(parseInt)结果讲解
- 电容电压、电感电流为什么不能突变?
- vue中因数据延迟导致echarts无法渲染问题
热门文章
- git提交输入账号和密码_GitHub-本地项目提交至GitHub
- 怎么用python自动注册_python selenium自动化(二)自动化注册流程
- mysql mof_mof提权
- oracle数据加载控制文件格式,oracle数据加载的几种常用方法
- mysql dml_详解MySQL---DDL语句、DML语句与DCL语句
- ORA-02291: 违反完整约束条件 - 未找到父项关键字 解决方法
- java的sdk在哪个文件夹_我的计算机中的Java SDK文件夹在哪里? Ubuntu 12.04
- python极简主义_XData: 为 Python 之禅写的极简主义数据验证工具
- java万年历计算法定节假日,java获取中国节假日
- 导出对象_从代数几何到导出代数几何:形变与逼近