数据库版本
OceanBase 4.3.5.5 (r105070022026031722-0639a4b5e9af1dae33bff3fefac15c3b62ae5571) (Built Mar 17 2026 22:56:58)
驱动版本
最新驱动版本:2.4.17
一些遇到的问题和验证后的结论
关于executeBatch返回的条数问题
参数:rewriteBatchedStatements=true&useArrayBinding=true
一句话结论:batch insert返回的rows不准确; batch update返回的rows可以准确;
如果rewriteBatchedStatements设置为false,又会导致insert、update非常慢;
insert 在batch模式下不能获取到真实的条数,就算拆分了executeBatch的批量条数并累加,也不能获取到真实的。因为可能执行的时候参数被合并掉了。
for (int i = 1; i <= rowCount; i++) {
ps.setInt(1, 1);
ps.setString(2, "updated-" + i);
ps.setLong(3, i);
ps.addBatch();
if (i % batchSize == 0) {
rows = rows + ps.executeBatch().length;
ps.clearBatch();
System.out.println("update ..."+rows);
}
}
rows = rows + ps.executeBatch().length;
但是update 在batch模式下,累加起来是可以的.
使用executeBatch执行更新语句性能差的问题
设置rewriteBatchedStatements=true;
设置autoCommit=false并设置定量提交;
设置useArrayBinding=true(必须);