黑马程序员技术交流社区
标题:
jdbc批处理
[打印本页]
作者:
ehuashao
时间:
2014-3-22 12:31
标题:
jdbc批处理
看到jdbc2.0的batch批处理,就自己试试它的性能如何。
1.现在新建一张测试用的表,数据库为oracle,mysql不支持batch批处理,及时在mysql中用了batch,数据库也只是会做普通的处理。
create table batch(id int,name varchar(5))
复制代码
2.向此表中用batch批处理,和逐条插入两种方式插入数据。
batch批处理:
PreparedStatement stmt = conn.prepareStatement("insert into batch values(?,'abc')");
stmt.clearBatch();
System.out.println("开始时间:"+System.currentTimeMillis());
for(int i=0;i<500000;i++){
stmt.setInt(1, i);
stmt.addBatch();
}
stmt.executeBatch();
System.out.println("结束时间:"+System.currentTimeMillis());
复制代码
2.逐条插入:
PreparedStatement stmt = conn.prepareStatement("insert into batch values(?,'abc')");
System.out.println("开始时间:"+System.currentTimeMillis());
for(int i=0;i<500000;i++){
stmt.setInt(1, i);
stmt.execute();
}
System.out.println("结束时间:"+System.currentTimeMillis());
复制代码
下面来看看两种方式在不同数据量下的执行效率。
数据量
100
500
5000
5万
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