繁体   English   中英

JDBC 的 executeBatch() 是并行执行语句还是一个接一个执行语句

[英]Does JDBC's executeBatch() execute statements in parallel or one after the other

我想从 postgreSQL 数据库中的多个表中删除条目。 这些表有外键约束,所以我只需要按特定顺序删除它们(否则删除将失败)。

我正在考虑将它们添加到批处理中并运行executeBatch()

我知道 executeBatch 将所有语句一起提交给驱动程序,但是语句是如何执行的? 删除顺序是否会按照添加到批次的顺序进行维护? 我在 API 文档中找不到它

JDBC 4.3 规范在 14.1.2成功执行部分中明确指定了批处理执行的行为:

批处理命令按照它们添加到批处理中的顺序连续(至少在逻辑上)执行。

数组中的条目根据处理命令的顺序进行排序(这与最初将命令添加到批处理中的顺序相同)。

“至少在逻辑上”为数据库提供了一些重新排序作为优化的余地,只要结果行为与批处理以指定顺序执行一样。 还需要按顺序执行以确保返回的更新计数匹配以及异常行为。

它们按顺序执行。

“批处理”的目的是将SQL语句收集起来,作为一个块,一个语句序列传输,以减少与数据库服务器通信的网络开销。

一个完整的“发送SQL,等待响应”需要时间,所以通过一起发送多个请求,可以消除很多等待时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM