gpt4 book ai didi

java - 使用事务时,使用 MySQL 批量插入行有什么意义吗?

转载 作者:行者123 更新时间:2023-11-29 01:55:58 25 4
gpt4 key购买 nike

具体来说,我正在使用 MySQL v5.5.41 并使用 Java JDBC 执行插入(驱动程序是 mysql-connector-java-5.1.30),尽管我不知道我使用的驱动程序是否相关。

我正在运行一次性应用程序以在 7 个表中插入相当多的行。我的每个“条目”(与相同数据相关的行)都包含 6 个表中可变数量的行,以及另一个表中与其他表相关的一行(大约要插入 10-20 行)每个“条目”跨越所有 7 个表,但偶尔可能会有更多)。

我将每个“条目”插入包装在一个事务中,该事务在插入条目的所有行之后提交。

我的问题是是否有必要将行插入批处理到我的每个通常需要多行插入的表中,例如在 Java 中使用 addBatch()batchExecute()

例如,如果我要为表中插入的每一行调用 executeUpdate() 函数(无批处理),我正在使用的 JDBC 库是否优化并最终只发出一个稍后提交事务时多值插入?或者,如果在这些情况下有优化,也许是MySQL自己进行的?

最佳答案

仍然会有多个语句 - 因此会有多个飞行请求。使用事务不会影响语句的执行方式(或为此类执行进行批处理)。

事务完全发生在 MySQL 引擎本身。使用事务是一个好的步骤,它对性能有很大帮助,主要是因为“提交”(和相关的数据刷新/同步)本身减少了。

对于低延迟 连接,性能将是等效的。然而,批处理仍然可以在“更高延迟”的连接中发挥作用。这是因为各个语句必须仍然 往返于服务器。 (例如,对于 5 毫秒的连接,每秒最多可以执行 200 条语句。)

无论如何,“最终性能答案”是特定负载/任务/配置下的基准。

关于java - 使用事务时,使用 MySQL 批量插入行有什么意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29331395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com