JDBC批量操作性能提升
JDBC
当使用INSERT INTO....VALUES()语句批量插入的时候,应该使用JDBC的PreparedStatement的批量操作方法,而不是採用一条一条运行的方法。
比如(来源:http://superjavason.iteye.com/blog/255423):
如上图,代码有3个关键的处理步骤:
1)关闭自己主动提交
2)addBatch
3)executeBatch
使用这样的方法,SQLite測试时的效果提升很明显,从 10000/s提升到100000/s(数据仅做參考,不能作为决策根据)
须要注意的是:这样的方式仅仅适合同样结构的SQL语句批量运行。对于不同结构的SQL语句不能用这样的方式,由于PreparedStatement在初始化的时候要指定sql
MySQL
使用上述參数后,MySQL的性能也有一定的提升。但提升不明显。经过查找,确认和例如以下两个參数有关:
- rewriteBatchedStatements=true
mysql默认关闭了batch处理, 通过此參数进行打开。 这个參数能够重写向 数据库提交的SQL语句
- useServerPrepStmts=false
假设不开启(useServerPrepStmts=false)。 使用com.mysql.jdbc.PreparedStatement进行本地SQL拼装, 最后送到db上就是已经替换了?
后的终于SQL
经过測试。打开这2个參数后,mysql的批处理性能从1000多提升到50000多
具体请參考:http://blog.csdn.net/whucyl/article/details/20838079
转载于:https://www.cnblogs.com/lxjshuju/p/6803073.html
JDBC批量操作性能提升相关推荐
- 转:Mybatis与JDBC批量插入数据库哪个更快
转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...
- jdbc批量插入、批量删除、批量更新
谨记:字符串拼接的时候一定要用引号引起来. 技巧:当jdbc处理sql语句时提示错误,可以将执行的sql语句打印出来,然后再在数据库中执行,从而解决错误. 一.JDBC的批量插入 JDBC批量插入主要 ...
- mysql jdbc批量更新_jdbc批量更新数据
{ boolean add = true; Connection conn = null; PreparedStatement pst = null; String sql = null; try { ...
- JDBC批量Insert深度优化(有事务)
JDBC批量Insert深度优化(有事务) 环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池 测试的方案: ...
- Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案
Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...
- jdbc 批量执行sql
最近有个需求是需要在java 后端执行导入,数据量比较大, 需要对数据进行很多操作,最后要执行插入数据操作, 一开始先组织好插入数据的sql语句放在数组中,使用的是 jdbcTemplate.batc ...
- JDBC批量插入sql-踩坑笔记
引言 使用JDBC连接mysql进行批量插入数据时出现bug,卡了两天还是没头绪,路过的兄弟如果有什么经验还请指点一番.抱拳抱拳! 控制台提示sql语法有错误: 正文 首先JDBC连接mysql封装了 ...
- Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子: 转载于:https://bl ...
- jdbc批量更新_用集算器更新数据库的技巧
对数据库进行批量更新时,使用update函数要比execute函数性能更好. 比如,source和target是两个不同的数据源,callrecordA是source中的物理表,有1万条记录,call ...
最新文章
- qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
- tp6中使用微信支付sdk
- 解决 java.net.ConnectException: Connection refused: connect 异常
- LeetCode 1941. 检查是否所有字符出现次数相同
- ACM 博弈专题(5种模板)
- python两层装饰器_python装饰器
- 如何格式化电脑_计算机格式化的方法教程
- 4 种最令人讨厌的编程语言:Java、C++ 上榜
- 响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言
- java debug详解_Java远程debug详解
- STC12参考例程(附模块资料代码注释、学习经验总结)
- 浏阳市大瑶计算机学校,2021年湖南长沙浏阳市重点小学排名学校一览
- 17 线性方程组——线性方程组解的结构、解的性质、解空间、基础解系、基础解系存在性
- java毕业生设计学生管理部门信息共享交流系统计算机源码+系统+mysql+调试部署+lw
- 奇迹mysql老是被误杀_【鸟友汇】致歉少时打雀被误杀的生灵们:傻老嘎、春暖儿、窜鸡、老麦……...
- JavaSE入门:面向对象(三)
- 微信小程序+.NET(九) 小程序之简单的广告拦截
- EasyExcel导出Excel指定属性列
- 【算法上车②】编译打包华为摄像头yolov3 狗识别demo
- CSS3 animation-fill-mode详解
热门文章
- mysql存储过程模糊查询_Mysql之存储过程“模糊查询drop表”
- Java中BigInteger的各种方法详解
- PAT_B_1009_Java(20分)
- python def函数报错详解_Python函数详解
- 计算机组成加减交替法被除数,计算机组成原第2章答案.doc
- redis可以存多少条数据_在银行存50万元,一年能有多少利息?不工作可以吗?...
- 数学--数论--HDU 12151七夕节
- hive简介以及安装配置
- LOAD DATA INFILE句法
- Coding: 编写合格的REST API