PreparedStatement的Batch功能

选择PreparedStatement仍是Statement取决于你要怎么使用它们. 对于只执行一次的SQL语句选择Statement是最好的. 相反, 若是SQL语句被屡次执行选用PreparedStatement是最好的.
PreparedStatement的第一次执行消耗是很高的. 它的性能体如今后面的重复执行.

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

例 1: 屡次执行Prepared Statement html

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 java

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驱动与数据库之间的网络通信.网络

相关文章
相关标签/搜索