读书人

三种JDBC批量安插编程方法的比较

发布时间: 2012-10-26 10:30:59 作者: rapoo

三种JDBC批量插入编程方法的比较

JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。
我用Mysql 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试

方法一,使用PreparedStatement加批量的方法

?

conn.setAutoCommit(false);   Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,                                       ResultSet.CONCUR_READ_ONLY);   for(int x = 0; x < size; x++){      stmt.execute("INSERT INTO adlogs(ip,website,yyyymmdd,hour,object_id) VALUES('192.168.1.3', 'localhost','20081009',8,'23123')");   }   conn.commit();  

?使用上述方法分别插入10万条数据的平均测试时间为:
方法一:17.844s
方法二:18.421s
方法三:16.359s

可以看出JDBC的batch语句插入不但没有性能提升,反而比没有用batch的时候要慢,当然这可能跟JDBC具体驱动的实现方法有关。 附件中是我测试代码,可以用来在自己电脑上跑一下。

在执行批量插入的时候最主要的是将自动提交取消,这样不管是否用JDBC的batch语法应该都没有关系。

    conn.setAutoCommit(false)??

?

?

读书人网 >其他数据库

热点推荐