java - executeBatch 在 Prepared Statement 上的效果如何?

标签 java database performance jdbc jakarta-ee

针对这个问题,问一问:executeBatch方法的效果如何?是否有一个性能基准,它说..“如果你有 1000 条记录要插入,使用 executeBatch 而不是 executeUpdate 可以节省 x 数量的数据库周期?”

或者这只是一个惯例?

编辑: 以下是我正在使用的东西:托管在 Z/OS 上的 DB2 V 8.1,这是一个 Web 应用程序,在执行最坏的情况下会一次性插入 80,000 条记录。

最佳答案

不确定您使用的是什么数据库。当我使用 db2 对此进行测试时,这是我看到的:

写入数据库:

1 次插入花费了 2500 微秒。

10 次插入花费了 6000 微秒。 (每次写入 600 微秒)

10000 次插入大约需要 100 万微秒。 (每次写入 100 微秒)

性能达到极限。 所有这一切都意味着发送消息的开销很大,而使用批处理方法可以最大限度地减少这种开销。当然,如果应用程序崩溃,大批量发送插入/更新会有丢失它们的风险。

另请注意:具体数字会因您的数据库和设置而异。所以你必须找到你自己的“甜蜜点”。但这给了你一个想法。

关于java - executeBatch 在 Prepared Statement 上的效果如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1143053/

相关文章:

java错误: java. lang.NoClassDefFoundError

java - Docker:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致 "exec:\"java\": executable file not found in $PATH"

java - 为什么 Mockito 不会抛出异常?

java - 处理 hibernate 实体上的数据库 View 的优雅方法?

c++ - 如何从Visual Studio(c++)中的MySql数据库读取数据?

python - 解决具有许多不同幂的长多项式的最快方法

javascript - Vue 的 ref 是不是每次使用都会进行一次 DOM 查找?

java - JAXB 解码未知 XML 内容的子集

sql - 如何在 Delphi 中查找与特定格式匹配的 Access 数据库中所有表的列表

java - 加快 Java 版 WordNet 词形还原器的使用速度