目录


业务场景:

当需要向数据库中发送一批SQL语句执行时,应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率;

使用JDBC进行批处理,实现批处理有两种机制;


第一种方式


Statement.addBatch(sql1) ; Statement.addBatch(sql2) ; ... // 内部是 Statement对象维护着一个list对象,保存着批处理的sql语句 ; executeBatch(); // 执行批处理SQL语句: clearBatch(); // 清楚批处理命令:即清除 list 中的sql语句 ;

优点:可以向数据库发送多条不同的SQL语句 ;

缺点:SQL语句没有 预编译当多条SQL语句仅仅是参数不同的时候,也必须呆呆的写多条;


第二种方式



    // 先将预编译好的 sql 保存到 prepareStatement对象中,这时候还没有存进 list 里面 ;

    prepareStatement(sql);

    // 每次调用prepareStatement对象的setxxxx()方法,都覆盖掉之前的sql语句 ;

    // 但是我们调用setxxxx方法之前,就会将之前的sql语句添加进内部的list里面,因此覆盖也没有事

    PreparedStatement.setXXXX(....) ;

    // 将预编译的sql语句,加到PreparedStatment对象内部的list中;

    PreparedStatement.addBatch();   

    // 将预编译的sql语句,加到PreparedStatment对象内部的list中;

    PreparedStatement.addBatch();   

    executeBatch();    // 执行批处理SQL语句:

    clearBatch();      // 清楚批处理命令:

优点:发送是预编译的SQL语句,执行效率高;

缺点:只能应用在SQL语句相同,但是参数不同的批处理里面;适用于在同一张表中进行批量数据的操作;


批处理中的 update() 方法

用批处理操作数据库,update() 方法返回的是一个数组,里面记录着每一条SQL语句影响的行数 ;


注意事项

在进行批处理的时候,一个批不要太大,否则会内存溢出,可以循环批处理;


备注:

mysql插入一千万条数据大概要花3小时,而oracle只需要花6分钟; 果然收费还是有收费的道理的 ;

最新文章

  1. 手把手教你玩转nginx负载均衡(三)----配置虚拟服务器网络
  2. geotrellis使用(三)geotrellis数据处理过程分析
  3. web开发过程中经常用到的一些公共方法及操作
  4. swift 当协议遇见了泛型
  5. 63.如何对单链表进行快排?和数组快排的分析与对比[quicksort of array and linked list]
  6. PHP 开发 APP 接口 学习笔记与总结 - JSON 方式封装通信接口
  7. QObject::deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象 good
  8. RDD中cache和persist的区别
  9. Byte measurements
  10. SmartThreadPool
  11. NDN路由--OSPFN安装与配置
  12. C#泛型详解
  13. Linux 学习 (五) 压缩与解压缩命令
  14. 使用 Chrome DevTools 调试 JavaScript
  15. MSSQL coalesce系统函数简介
  16. Java的课后作业——18.10.18
  17. java 几种对象
  18. 关于dismissViewControllerAnimated值得注意的一点(deinit)
  19. elasticSearch nested exist与missing查询
  20. uipath接入Python

热门文章

  1. 【线性代数】5-2:置换和余因子(Permutations and Cofactors)
  2. 查询Linux下文件格式.
  3. codeforces gym #101987B- Cosmetic Survey(floyd)
  4. 【Robot Framework 】项目实战汇总
  5. 多项式fft、ntt、fwt 总结
  6. zabbix监控项整理Items-key
  7. 一个U盘制作多个系统
  8. golang入门time与string转换, time加减时间, 两个时间差
  9. 如何永久激活(破解) IntelliJ IDEA 2018.2.2
  10. SqlServer2008数据库的备份与还原