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批量操作性能提升相关推荐

  1. 转:Mybatis与JDBC批量插入数据库哪个更快

    转自 http://www.cnblogs.com/fnz0/p/5713102.html, https://www.cnblogs.com/wxw7blog/p/8706797.html [转]: ...

  2. jdbc批量插入、批量删除、批量更新

    谨记:字符串拼接的时候一定要用引号引起来. 技巧:当jdbc处理sql语句时提示错误,可以将执行的sql语句打印出来,然后再在数据库中执行,从而解决错误. 一.JDBC的批量插入 JDBC批量插入主要 ...

  3. mysql jdbc批量更新_jdbc批量更新数据

    { boolean add = true; Connection conn = null; PreparedStatement pst = null; String sql = null; try { ...

  4. JDBC批量Insert深度优化(有事务)

    JDBC批量Insert深度优化(有事务) 环境: MySQL 5.1 RedHat Linux AS 5 JavaSE 1.5 DbConnectionBroker 微型数据库连接池 测试的方案: ...

  5. Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案

    Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 参考文章: (1)Mybatis与JDBC批量插入MySQL数据库性能测试及解决方案 (2)https://www.cnblogs. ...

  6. jdbc 批量执行sql

    最近有个需求是需要在java 后端执行导入,数据量比较大, 需要对数据进行很多操作,最后要执行插入数据操作, 一开始先组织好插入数据的sql语句放在数组中,使用的是 jdbcTemplate.batc ...

  7. JDBC批量插入sql-踩坑笔记

    引言 使用JDBC连接mysql进行批量插入数据时出现bug,卡了两天还是没头绪,路过的兄弟如果有什么经验还请指点一番.抱拳抱拳! 控制台提示sql语法有错误: 正文 首先JDBC连接mysql封装了 ...

  8. Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?

    不拾掇Java有好几年了(N>3吧),之所以写这篇文章其实是纯粹是为了给开发人员一些好的使用jdbc真正去减少交互和提升批量处理batch update性能的例子: 转载于:https://bl ...

  9. jdbc批量更新_用集算器更新数据库的技巧

    对数据库进行批量更新时,使用update函数要比execute函数性能更好. 比如,source和target是两个不同的数据源,callrecordA是source中的物理表,有1万条记录,call ...

最新文章

  1. qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
  2. tp6中使用微信支付sdk
  3. 解决 java.net.ConnectException: Connection refused: connect 异常
  4. LeetCode 1941. 检查是否所有字符出现次数相同
  5. ACM 博弈专题(5种模板)
  6. python两层装饰器_python装饰器
  7. 如何格式化电脑_计算机格式化的方法教程
  8. 4 种最令人讨厌的编程语言:Java、C++ 上榜
  9. 响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言
  10. java debug详解_Java远程debug详解
  11. STC12参考例程(附模块资料代码注释、学习经验总结)
  12. 浏阳市大瑶计算机学校,2021年湖南长沙浏阳市重点小学排名学校一览
  13. 17 线性方程组——线性方程组解的结构、解的性质、解空间、基础解系、基础解系存在性
  14. java毕业生设计学生管理部门信息共享交流系统计算机源码+系统+mysql+调试部署+lw
  15. 奇迹mysql老是被误杀_【鸟友汇】致歉少时打雀被误杀的生灵们:傻老嘎、春暖儿、窜鸡、老麦……...
  16. JavaSE入门:面向对象(三)
  17. 微信小程序+.NET(九) 小程序之简单的广告拦截
  18. EasyExcel导出Excel指定属性列
  19. 【算法上车②】编译打包华为摄像头yolov3 狗识别demo
  20. CSS3 animation-fill-mode详解

热门文章

  1. mysql存储过程模糊查询_Mysql之存储过程“模糊查询drop表”
  2. Java中BigInteger的各种方法详解
  3. PAT_B_1009_Java(20分)
  4. python def函数报错详解_Python函数详解
  5. 计算机组成加减交替法被除数,计算机组成原第2章答案.doc
  6. redis可以存多少条数据_在银行存50万元,一年能有多少利息?不工作可以吗?...
  7. 数学--数论--HDU 12151七夕节
  8. hive简介以及安装配置
  9. LOAD DATA INFILE句法
  10. Coding: 编写合格的REST API