Java JDBC executeBatch 批量操作

对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十分熟悉的,尤其是在小型公司的开发人员来讲,大部分的工作也就是这些了。但是对于一个大型系统而言,简单的CRUD是无法存活下来的,因为它的数据量极大,不是简单的几千条,几万条,有时基本在几十万条,甚至几百万条数据量。

之前我们的业务也没有太多,简单的生成订单就是普通的insert操作,有一次发现,操作一个2w条的订单数量,前后花费的时间要15分钟,这个让我有点失望。2w的数据量真的不太大,为什么这么慢呢?当然系统中还有其它的操作存在,不至于这么点的数据量让mysql撑不住了。

原理其实也很简单,每insert一条记录,需要记录下log等一系列的日志操作,这些都是要消费时间的。如果批量提交的话,则会只 发送一次的请求。这就是批量提交与普通的提交的差别了。

但是要使用好批量提交操作,有几点还是要注意的。

1. 批量提交的次数,不是几十万条数量一股脑儿的提交上去了,一般是分段提交,每一段提交个1000条数据量,同一段的生成一个UUID记录;

2. 使用批量提交可以直接写事务,
  
    connection.setAutoCommit(false);
    
    psmt.addBatch();
    psmt.executeBatch();

    connection.commit();
   

   这样写,没有问题,事务里面默认会把所有batch里的操作当成一个整体去提交。

3. 如果你没有在事务中写,很可惜,批量的操作会当成普通的操作了,此时你需要在连接的
   时候去加一个参数:
  
rewriteBatchedStatements=true


以上就是记录JDBC 批量操作的方法和注意事项。

猜你喜欢

转载自gaofulai1988.iteye.com/blog/2259604