A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ehuashao 中级黑马   /  2014-3-22 12:31  /  929 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到jdbc2.0的batch批处理,就自己试试它的性能如何。
1.现在新建一张测试用的表,数据库为oracle,mysql不支持batch批处理,及时在mysql中用了batch,数据库也只是会做普通的处理。
  1. create table batch(id int,name varchar(5))  
复制代码

2.向此表中用batch批处理,和逐条插入两种方式插入数据。
batch批处理:
  1. PreparedStatement stmt = conn.prepareStatement("insert into batch values(?,'abc')");  
  2.         stmt.clearBatch();  
  3.         System.out.println("开始时间:"+System.currentTimeMillis());  
  4.         for(int i=0;i<500000;i++){  
  5.             stmt.setInt(1, i);  
  6.             stmt.addBatch();      
  7.         }  
  8.         stmt.executeBatch();  
  9.         System.out.println("结束时间:"+System.currentTimeMillis());  
复制代码

2.逐条插入:
  1. PreparedStatement stmt = conn.prepareStatement("insert into batch values(?,'abc')");  
  2.         System.out.println("开始时间:"+System.currentTimeMillis());  
  3.         for(int i=0;i<500000;i++){  
  4.         stmt.setInt(1, i);  
  5.         stmt.execute();  
  6.         }  
  7.         System.out.println("结束时间:"+System.currentTimeMillis());
复制代码

下面来看看两种方式在不同数据量下的执行效率。
数据量10050050005万50万
一条一条插<1s<1s~3s~20s~240s
batch批处理<1s<1s<1s<1s~7s

上图是我拿自己的笔记本跑出来的,所以说数据还是可信的。由此可见在我们对数据库进行大批量数据操作的时候,能合理的运用batch方法,可以提高很大的工作效率。

评分

参与人数 1黑马币 +1 收起 理由
linweiwen + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
噢,效率大大地提高了,楼主探究精神值得肯定!:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马