JDBC批处理更新如何有用?

coo*_*per 11 java jdbc

每个人都说批量更新减少了JDBC调用的次数.有人可以解释"JDBC调用"的含义,以及与在一次JDBC调用中携带整个负载相比,此类调用的数量增加的成本是多少.

jon*_*one 10

通俗地说,当开发人员使用JDBC调用这一短语时,他们谈论的是通过线路将信息发送到数据库.JDBC API的批处理功能允许您在单个网络调用中提交多个离散操作,而不是调用每个SQL语句.从JDBC规范:

批处理更新工具允许Statement对象将一组异构SQL语句作为单个单元或批处理一起提交给基础数据源.

对于PreparedStatement,只存在创建单个语句的额外好处.这允许您使用多组绑定参数执行相同的查询,而无需多次将语句本身添加到批处理中.最终结果是减少了网络流量及其相关的开销.

规范中的一个例子:

PreparedStatement stmt = con.prepareStatement(
"INSERT INTO employees VALUES (?, ?)");

stmt.setInt(1, 2000);
stmt.setString(2, "Kelly Kaufmann");
stmt.addBatch();

stmt.setInt(1, 3000);
stmt.setString(2, "Bill Barnes");
stmt.addBatch();

// submit the batch for execution
int[] updateCounts = stmt.executeBatch();
Run Code Online (Sandbox Code Playgroud)


kno*_*ody 5

IBM文档所述

支持JDBC 2.0及更高版本的JDBC驱动程序支持批量更新。使用批处理更新,而不是一次更新一个DB2®表的行,您可以指示JDBC同时执行一组更新。可以包含在同一批更新中的语句称为可批处理语句。

如果语句具有输入参数或主机表达式,则只能将该语句包含在具有同一语句的其他实例的批处理中。这种类型的批次称为均质批次。如果语句没有输入参数,则仅当批处理中的其他语句没有输入参数或宿主表达式时,才可以将该语句包括在批处理中。这种类型的批次称为异类批次。可以包含在同一批次中的两个语句称为批次兼容。