文档章节

PreparedStatement的Batch功能

墙头草
 墙头草
发布于 2011/07/29 10:05
字数 402
阅读 207
收藏 2
选择PreparedStatement还是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用PreparedStatement是最好的.
PreparedStatement的第一次执行消耗是很高的. 它的性能体现在后面的重复执行.

Update大量的数据时, 先Prepare一个INSERT语句再多次的执行, 会导致很多次的网络连接. 要减少JDBC的调用次数改善性能, 你可以使用PreparedStatement的AddBatch()方法一次性发送多个查询给数据库. 例如, 让我们来比较一下下面的例子.
Quartz时序调度框架分析

例 1: 多次执行Prepared Statement

PreparedStatement ps = conn.prepareStatement(
   "INSERT into employees values (?, ?, ?)");

for (n = 0; n < 100; n++) {

  ps.setString(name[n]);
  ps.setLong(id[n]);
  ps.setInt(salary[n]);
  ps.executeUpdate();
}
例 2: 使用Batch

PreparedStatement ps = conn.prepareStatement(
   "INSERT into employees values (?, ?, ?)");内陆运输

for (n = 0; n < 100; n++) {

  ps.setString(name[n]);
  ps.setLong(id[n]);
  ps.setInt(salary[n]);
  ps.addBatch();
}
ps.executeBatch();

在例 1中, PreparedStatement被用来多次执行INSERT语句. 在这里, 执行了100次INSERT操作, 共有101次网络往返. 其中,1次往返是预储statement, 另外100次往返执行每个迭代.
在例2中, 当在100次INSERT操作中使用addBatch()方法时, 只有两次网络往返. 1次往返是预储statement, 另一次是执行batch命令. 虽然Batch命令会用到更多的数据库的CPU周期, 但是通过减少网络往返,性能得到提高.
记住, JDBC的性能最大的增进是减少JDBC驱动与数据库之间的网络通讯.

© 著作权归作者所有

墙头草
粉丝 16
博文 145
码字总数 117172
作品 0
卢湾
私信 提问
PreparedStatement和Statement区别

JDBC驱动的最佳化是基于使用的是什么功能. 选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的. 相反, 如果SQL语句被多次执行选用P...

偶尔诗文
2015/11/10
36
0
数据库开发 - JDBC进阶

JDBC进阶 业务场景(一) 在企业级业务场景中,我们会经常遇到我们编写的SQL语句,查询条件过弱,区分性不强,SQL所查询的内容过多。一方面,我们可以通过修改过滤条件来减少搜索内容,在一些...

抢小孩糖吃
2016/09/21
42
0
SpringBoot高级篇JdbcTemplate之数据插入使用姿势详解

db操作可以说是java后端的必备技能了,实际项目中,直接使用JdbcTemplate的机会并不多,大多是mybatis,hibernate,jpa或者是jooq,然后前几天写一个项目,因为db操作非常简单,就直接使用J...

小灰灰Blog
04/23
31
0
关于 Db类中的批处理batch操作

@JFinal 波哥你好,我有个小小的建议,希望能考虑一下,是关于 Db类中的批处理batch操作的。 从我个人而言,我使用最多就是读取文件的中的数据,进行批量入库 (oracle数据库),其中有个问题...

ForJustice
2012/11/07
2.5K
4
02-dbutils源码之QueryRunner & 一个例子

在01中讲了下AbstractQueryRunner的基本内容,对于JDBC比较熟悉的童鞋都可以很容易明白。接下来会分析下AbstractQueryRunner的子类QueryRunner。这个类是最常用的了。 下面是类的继承关系: ...

mnisummer
2013/09/23
3.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊nacos config的deleteConfig

序 本文主要研究一下nacos config的deleteConfig ConfigController nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/controller/ConfigController.java @Controller@Re......

go4it
昨天
3
0
面试:原来Redis的五种数据类型底层结构是这样的

关注我,可以获取最新知识、经典面试题以及微服务技术分享   在Redis中会涉及很多数据结构,比如SDS,双向链表、字典、压缩列表、整数集合等等。Redis会基于这些数据结构自定义一个对象系统...

ccww_
昨天
4
0
java发送html模板的高逼格邮件

最近做了一个监测k8s服务pod水平伸缩发送邮件的功能(当pod的cpu/内存达到指定阈值后会水平扩展出多个pod、或者指定时间内pod数应扩展到指定数量),一开始写了个格式很low的邮件,像下面这样...

码农实战
昨天
10
0
php-fpm配置文件详解/MariaDB密码重置、慢查询日志

来源:https://blog.csdn.net/Powerful_Fy php-fpm主配置文件路径:/usr/local/php-fpm/etc/php-fpm.conf #位于安装php安装目录下的etc/目录中,该文件中最后一行将配置文件指向:include=/...

asnfuy
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部