黑马程序员技术交流社区

标题: jdbc批处理 [打印本页]

作者: ehuashao    时间: 2014-3-22 12:31
标题: jdbc批处理
看到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方法,可以提高很大的工作效率。

作者: linweiwen    时间: 2014-3-22 13:12
噢,效率大大地提高了,楼主探究精神值得肯定!:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2