(十七)使用JDBC进行批处理
2024-09-04 06:05:06
目录
业务场景:
当需要向数据库中发送一批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分钟; 果然收费还是有收费的道理的 ;
最新文章
- 手把手教你玩转nginx负载均衡(三)----配置虚拟服务器网络
- geotrellis使用(三)geotrellis数据处理过程分析
- web开发过程中经常用到的一些公共方法及操作
- swift 当协议遇见了泛型
- 63.如何对单链表进行快排?和数组快排的分析与对比[quicksort of array and linked list]
- PHP 开发 APP 接口 学习笔记与总结 - JSON 方式封装通信接口
- QObject::deleteLater()并没有将对象立即销毁,而是向主消息循环发送了一个event,下一次主消息循环收到这个event之后才会销毁对象 good
- RDD中cache和persist的区别
- Byte measurements
- SmartThreadPool
- NDN路由--OSPFN安装与配置
- C#泛型详解
- Linux 学习 (五) 压缩与解压缩命令
- 使用 Chrome DevTools 调试 JavaScript
- MSSQL coalesce系统函数简介
- Java的课后作业——18.10.18
- java 几种对象
- 关于dismissViewControllerAnimated值得注意的一点(deinit)
- elasticSearch nested exist与missing查询
- uipath接入Python
热门文章
- 【线性代数】5-2:置换和余因子(Permutations and Cofactors)
- 查询Linux下文件格式.
- codeforces gym #101987B- Cosmetic Survey(floyd)
- 【Robot Framework 】项目实战汇总
- 多项式fft、ntt、fwt 总结
- zabbix监控项整理Items-key
- 一个U盘制作多个系统
- golang入门time与string转换, time加减时间, 两个时间差
- 如何永久激活(破解) IntelliJ IDEA 2018.2.2
- SqlServer2008数据库的备份与还原