全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?

在JDBC编程接口中Statement 有两个方法特别值得注意:

通过使用addBatch()executeBatch()这一对方法可以实现批量处理数据。

不过值得注意的是,首先需要在数据库链接中设置手动提交,connection.setAutoCommit(false),然后在执行Statement之后执行connection.commit()

import java.io.BufferedReader;
import java.io.IOException;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import com.mysql.jdbc.Connection;
public class MysqlBatchUtil {
 private String sql="INSERT INTO db_test (param1,param2,param3,param4,param5) VALUES (?,?,?,?,?)"; 
 private String charset="utf-8"; 
 private String connectStr="jdbc:mysql://localhost:3306/test";
 private String username="root"; 
 private String password="123456"; 
 private void doStore() throws ClassNotFoundException, SQLException, IOException { 
  Class.forName("com.mysql.jdbc.Driver"); 
  connectStr += "?useServerPrepStmts=false&rewriteBatchedStatements=true";//此处是测试高效批次插入,去掉之后执行时普通批次插入
  Connection conn = (Connection) DriverManager.getConnection(connectStr, username,password); 
  conn.setAutoCommit(false); // 设置手动提交 
  int count = 0; 
  PreparedStatement psts = conn.prepareStatement(sql); 
  String line = null; 
  Date begin=new Date();
  for(int i=0;i<=100000;i++){
   psts.setString(1, i+"param1"); 
   psts.setString(2, i+"param2"); 
   psts.setString(3, i+"param3"); 
   psts.setString(4, i+"param4"); 
   psts.setString(5, i+"param5"); 
   psts.addBatch();   // 加入批量处理 
   count++;  
  } 
  psts.executeBatch(); // 执行批量处理 
  conn.commit(); // 提交 
  Date end=new Date();
  System.out.println("数量="+count); 
  System.out.println("运行时间="+(end.getTime()-begin.getTime()));
  conn.close(); 
 } 
 public static void main(String[] args) {
  try {
   new MysqlBatchUtil().doStore();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

测试结果:

数量=100001
运行时间=4725

一共10W,执行时间一共花费 47 秒.

这个效率仍然不高,似乎没有达到想要的效果,需要进一步改进。

在MySQL JDBC连接字符串中还可以加入参数,

rewriteBatchedStatements=true

mysql默认关闭了batch处理,通过此参数进行打开,这个参数可以重写向数据库提交的SQL语句

useServerPrepStmts=false

如果不开启(useServerPrepStmts=false),使用com.mysql.jdbc.PreparedStatement进行本地SQL拼装,最后送到db上就是已经替换了?后的最终SQL.

在此稍加改进,连接字符串中加入下面语句(代码构造方法中去掉注释):

connectStr += "?useServerPrepStmts=false&rewriteBatchedStatements=true";

再次测试结果如下:

数量=100001
运行时间=1213

同样的数据量,这次执行只花费了12秒 ,由此可见处理效率大大提高,呵呵

以上所述是小编给大家介绍的Java使用JDBC向MySQL数据库批次插入10W条数据测试效率,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# jdbc  # 数据库批次插入数据  # Java并发编程多线程间的同步控制和通信详解  # Java并发编程之volatile与JMM多线程内存模型  # Java多线程之并发编程的基石CAS机制详解  # Java多线程并发编程和锁原理解析  # 深入理解Java多线程与并发编程  # Java 多线程并发编程提高数据处理效率的详细过程  # 在此  # 小编  # 的是  # 这一  # 还可以  # 执行时间  # 给大家  # 不高  # 重写  # 可以实现  # 所述  # 给我留言  # 感谢大家  # 提高效率  # 疑问请  # 有任何  # 有两个  # 不开启  # 关闭了  # 花费了 


相关文章: 建站三合一如何选?哪家性价比更高?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  网站图片在线制作软件,怎么在图片上做链接?  C++时间戳转换成日期时间的步骤和示例代码  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何在七牛云存储上搭建网站并设置自定义域名?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何通过免费商城建站系统源码自定义网站主题与功能?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过智能用户系统一键生成高效建站方案?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  建站之星ASP如何实现CMS高效搭建与安全管理?  XML的“混合内容”是什么 怎么用DTD或XSD定义  香港服务器WordPress建站指南:SEO优化与高效部署策略  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何制作网站标识牌,动态网站如何制作(教程)?  如何高效生成建站之星成品网站源码?  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何通过主机屋免费建站教程十分钟搭建网站?  制作网站怎么制作,*游戏网站怎么搭建?  定制建站流程解析:需求评估与SEO优化功能开发指南  如何快速搭建响应式可视化网站?  建站之星后台密码遗忘如何找回?  ,想在网上投简历,哪几个网站比较好?  威客平台建站流程解析:高效搭建教程与设计优化方案  香港服务器部署网站为何提示未备案?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  宝塔新建站点为何无法访问?如何排查?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  已有域名能否直接搭建网站?  如何在自有机房高效搭建专业网站?  孙琪峥织梦建站教程如何优化数据库安全?  如何使用Golang安装API文档生成工具_快速生成接口文档  制作门户网站的参考文献在哪,小说网站怎么建立?  重庆市网站制作公司,重庆招聘网站哪个好?  南平网站制作公司,2025年南平市事业单位报名时间?  广东企业建站网站优化与SEO营销核心策略指南  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  上海网站制作开发公司,上海买房比较好的网站有哪些?  如何在阿里云购买域名并搭建网站?  如何用已有域名快速搭建网站?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  如何撰写建站申请书?关键要点有哪些?  山东网站制作公司有哪些,山东大源集团官网?  如何通过PHP快速构建高效问答网站功能?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。