通过JDBC使用批处理+事务,往数据库中插入百万级数据测试
来源:互联网 发布:python hex to ascii 编辑:程序博客网 时间:2024/06/05 16:25
最近再学习MySQL,有时候需要百万级/千万级的数据量来支撑测试,刚开始通过语句一条一条的插入,200W行插入了4个小时才搞定,所以写了如下代码来快速插入。
单纯的JDBC,没有采用多线程,多线程的方式后期会更新,代码有缺陷的地方,希望评论指出。
JdbcUtils就不贴出来了。
本人自用笔记本,插入速度大概在 1W+条 / S
public void commitBatch() {String Thread = "InnoDB";//事务数量int number = 1;//事务上限int maxCommit = 50000;//插入数量int insertNumber = 500000;System.out.println("当前数据引擎:"+Thread+",测试:通过JDBC使用批处理+事务,往数据库中插入"+(insertNumber/10000)+"W条数据,现在时间:"+new Date());Connection conn = null;PreparedStatement pstmt = null;Long startTime = System.currentTimeMillis();try {// 获取连接conn = JdbcUtils.getConnection();// 获得发送sql 的对象String sql = "insert into tuser(name,password,userid) values(?,?,?)";pstmt = conn.prepareStatement(sql);//设置事务不自动提交conn.setAutoCommit(false);// 批量插入记录for (int i = 1; i <= insertNumber; i++) {String uuid = UUID.randomUUID().toString().replaceAll("-", "");// 设置参数pstmt.setString(1, "name" + i);pstmt.setString(2, uuid);pstmt.setInt(3, i);// 增加到批处理中pstmt.addBatch();//分段提交 if(i%maxCommit==0&& i!=0){ number++; pstmt.executeBatch(); conn.commit(); conn.setAutoCommit(false);// 开始事务 pstmt = conn.prepareStatement(sql); } }// 执行pstmt.executeBatch();//提交事务conn.commit();Long endTime = System.currentTimeMillis();System.out.println("当前数据引擎:"+Thread+",已成功插入"+(insertNumber/10000)+"W条数据,现在时间:"+new Date());System.out.println("当前数据引擎:"+Thread+",用时:" + ((endTime - startTime))+"毫秒");System.out.println("当前数据引擎:"+Thread+",每"+(maxCommit/10000)+"W为一个事务,共使用了:"+number+"个事务。");System.out.println("当前数据引擎:"+Thread+",本次JDBC批处理事务上限测试是:"+maxCommit);} catch (Exception e) {e.printStackTrace();} finally {JdbcUtils.release(conn, pstmt);}}
阅读全文
0 0
- 通过JDBC使用批处理+事务,往数据库中插入百万级数据测试
- java中JDBC实现往MySQL插入百万级数据的实例代码
- java中JDBC实现往MySQL插入百万级数据的实例代码
- 上亿级数据量-JDBC插入数据库
- 上亿级数据量-JDBC插入数据库
- 上亿级数据量-JDBC插入数据库
- jdbc导入百万级数据
- JDBC 之插入Blob(图片)& 批处理 & 数据库事务
- 读取txt,jdbc导入百万级数据
- jdbc oracle 百万级数据量存储
- SQL Server 插入百万级数据
- jdbc批处理+事务处理 十万级数据导入
- php向mysql数据库插入百万级数据的两种方法效率比较
- 数据库优化之百万级数据方案
- java往csv文件中导出百万级数据
- 数据库插入大量数据性能测试——批处理+事务VS普通插入
- JDBC中使用批处理处理大量的插入数据操作
- 向数据库中批量插入千万级数据
- 程序员必备:推荐一个谷歌镜像导航网站
- hdu1756判断点是否在多边形内部
- java高级程序设计-拆泛型
- 报表导出 使用POI
- Ajax相关总结
- 通过JDBC使用批处理+事务,往数据库中插入百万级数据测试
- 最新的ubuntu下安装Oracle jdk的方法
- PostgreSQL数据库Dig8
- redis在linux环境下的安装与启动
- JAVA中的接口与内部类
- map集合
- oracle游标简介
- Spark学习笔记(14)State管理之updateStateByKey解密
- PHP7.1.8编译memcached扩展