`

Java JDBC executeBatch 批量操作

    博客分类:
  • Java
阅读更多
对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 批量操作的方法和注意事项。
分享到:
评论

相关推荐

    【IT十八掌徐培成】Java基础第23天-03.ppst-addBatch-executeBatch.zip

    【IT十八掌徐培成】Java基础第23天-03.ppst-addBatch-executeBatch.zip

    批量处理JDBC语句提高处理速度

    有时候JDBC运行得不够快,这使得有些程序员使用数据库... 使用批量处理功能涉及下面的两个方法: · addBatch(String) 方法 · executeBatch方法 如果你正在使用Statement 那么addBatch 方法可以接受一个通

    【IT十八掌徐培成】Java基础第23天-03.ppst-addBatch-executeBatch - 副本.zip

    【IT十八掌徐培成】Java基础第23天-03.ppst-addBatch-executeBatch - 副本.zip

    jdbc连接数据库的方式2

    我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的...

    MySQL数据库

    ###批量操作 - Statement批量操作: statement.addBatch(sql1); statement.addBatch(sql2); statement.addBatch(sql3); //执行批量操作 statement.executeBatch(); - PreparedStatement批量操作: ...

    jdbc基础和参考

    JDBC:java版本的ODBC JDBC连接数据库的步骤: 1.注册驱动(加载驱动): 注册的方式: 1.使用类加载器(使用反射的方式) Class.forName(driverName); 2.实例化Driver Driver driver = new oracle.jdbc...

    java面试800题

    Q0060 JDBC批量更新的作用和用法 "提高执行效率。减少执行时间。 Statement sm = cn.createStatement(); sm.addBatch(sql1); sm.addBatch(sql2); ... sm.executeBatch() 或者 PreparedStatement ps = ...

    使用JDBC在MySQL数据库中如何快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢?...int[] executeBatch() throws SQLException Submits a batch of commands to the database for exec

    Java 字符串连接的性能问题分析

    主要介绍了Java 字符串连接的性能问题分析的相关资料,需要的朋友可以参考下

    JDBC Oracle执行executeUpdate卡死问题的解决方案

    使用jdbc执行oracle的删除操作的时候程序卡死不动了。 问题分析: 对于这一类问题,一般都是数据库事务未提交,导致executeUpdate卡死。 所以解决方案: 1、在执行完executeUpdate 后,记得将事务提交con.commit(); ...

    NC开发文档

    int rows = session.executeBatch(); //执行 b.有参批量更新 String sql = "update bd_deptdoc set dept_code =„aaa‟ where dept_code=?”; SQLParameter param = new SQLParameter(); //构造参数对象 param....

    sql2005 批量更新问题的解决方法

    … sm.executeBatch() 用Statement的好处就是每次可以直接传一个SQL语句进去,不用管那么多。可是在数据量比较大的时候,应该会对效率有影响。不建议使用。 PreparedStatement ps = cn.preparedStatement(sql); { ...

    火车票管理系统

    int [] batchNumber=sta.executeBatch(); conn.commit(); //将手动提交模式转换为自动提交模式 conn.setAutoCommit(true); return batchNumber.length; } catch (SQLException e) { JOptionPane....

    executeQuery executeUpdate的区别

    executeQuery executeUpdate的区别

    rainmeter_tool:通过对贴吧大神得源代码进行修改,打造成适合自己的桌面零部散件

    rainmeter_tool通过对贴吧大神得源代码进行修改,打造成适合自己的桌面零部散件原先功能显示时间,日期,星期三显示当地天气和未来4天天气自定义... CommandMeasure " MemoInputX ExecuteBatch 1-2 " ]ToolTipText =点

    Student的描述.class

    Student的描述.class

    servlet+jsp+javaBean开发的网站书店(完整源码)

    pstmt_item.executeBatch(); dbUtil.getCon().commit(); } catch (SQLException e) { e.printStackTrace(); try { dbUtil.getCon().rollback(); } catch (SQLException e1) { e1....

    servlet制作网站

    stat.executeBatch(); conn.commit(); sign = true; } catch (Exception ex) { conn.rollback(); sign = false; ex.printStackTrace(); } finally { try { conn.setAutoCommit(true); ...

    Oracle addBatch()用法实例详解

    主要介绍了Oracle addBatch()用法实例详解的相关资料,这里提供实例帮助大家掌握理解这部分知识,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics