Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)
发布时间 - 2026-01-10 22:11:49 点击率:次使用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 多线程并发编程提高数据处理效率的详细过程
# 在此
# 小编
# 的是
# 这一
# 还可以
# 执行时间
# 给大家
# 不高
# 重写
# 可以实现
# 所述
# 给我留言
# 感谢大家
# 提高效率
# 疑问请
# 有任何
# 有两个
# 不开启
# 关闭了
# 花费了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Blade模板引擎?(完整语法和示例)
文字头像制作网站推荐软件,醒图能自动配文字吗?
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel如何实现文件上传和存储?(本地与S3配置)
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
python中快速进行多个字符替换的方法小结
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel如何实现多对多模型关联?(Eloquent教程)
JS经典正则表达式笔试题汇总
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何在企业微信快速生成手机电脑官网?
网站页面设计需要考虑到这些问题
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
深圳网站制作培训,深圳哪些招聘网站比较好?
如何在宝塔面板创建新站点?
作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
公司网站制作价格怎么算,公司办个官网需要多少钱?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
微信小程序 HTTPS报错整理常见问题及解决方案
*服务器网站为何频现安全漏洞?
长沙企业网站制作哪家好,长沙水业集团官方网站?
郑州企业网站制作公司,郑州招聘网站有哪些?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
jQuery中的100个技巧汇总
中山网站制作网页,中山新生登记系统登记流程?
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何在局域网内绑定自建网站域名?
在centOS 7安装mysql 5.7的详细教程
javascript中闭包概念与用法深入理解
如何在阿里云购买域名并搭建网站?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
如何批量查询域名的建站时间记录?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
微信小程序 canvas开发实例及注意事项
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何用5美元大硬盘VPS安全高效搭建个人网站?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?

