三种JDBC批量插入编程方法的比较
来源:互联网 发布:axure7.0 for mac破解 编辑:程序博客网 时间:2024/05/18 18:03
JDBC批量插入主要用于数据导入和日志记录因为日志一般都是先写在文件下的等。
我用MySQL 5.1.5的JDBC driver 分别对三种比较常用的方法做了测试
- 方法一,使用PreparedStatement加批量的方法
try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(o_url, userName, password); conn.setAutoCommit(false); String sql = "INSERT into tbl_person (name,age) VALUES(?,?)"; PreparedStatement prest = conn.prepareStatement(sql); for(int x = 0; x < size; x++){ prest.setString(1, "张三"); prest.setString(2, 20); prest.addBatch(); } prest.executeBatch(); conn.commit(); conn.close(); } catch (SQLException ex) { Logger.getLogger(MyLogger.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(MyLogger.class.getName()).log(Level.SEVERE, null, ex); }
- 方法二 使用Statement加批量的方法
conn.setAutoCommit(false); Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); for(int x = 0; x < size; x++){ stmt.addBatch("INSERT INTO adlogs(ip,website,yyyymmdd,hour,object_id) VALUES('192.168.1.3', 'localhost','20081009',8,'23123')"); } stmt.executeBatch(); conn.commit();
方法三:直接使用Statementconn.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)
个人觉得第一种方法是最方便最实用的。 - 方法二 使用Statement加批量的方法
1 0
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- 三种JDBC批量插入编程方法的比较
- JDBC:大数据量插入的三种方法比较
- jdbc批量操作的三种方法
- PHP 批量插入数据三种方法性能比较
- JDBC批量插入数据的方法
- JDBC的批量批量插入
- JDBC的批量批量插入
- JDBC的批量插入
- JDBC的批量插入
- 点评 ibatis+oracle 批量插入的三种方法.
- 点评 ibatis+oracle 批量插入的三种方法
- 欢迎使用CSDN-markdown编辑器
- 最大流最小割定理证明
- mongodb监控工具mongostat
- st算法模板(区间最值)
- Ubuntu 14.04 NDK R9 编译ffmpeg2.4
- 三种JDBC批量插入编程方法的比较
- poj1364——King(差分约束)
- 蜥蜴
- List 内存 分页
- JavaEE学习之过滤器 Filter
- 信息隐藏-预处理-猫脸变换-Arnold
- bzoj1066 蜥蜴
- Windows下手动搭建Apache+PHP开发环境
- CentOS 6.5下二进制安装 MySQL 5.6