gpt4 book ai didi

java - 在 MySQL 表中插入多行 : Threading vs BatchUpdate

转载 作者:行者123 更新时间:2023-11-29 10:32:31 24 4
gpt4 key购买 nike

假设,我们要通过java代码在mysql表中插入20行。以下哪种方法有效以及原因。

1)使用executeBatch将所有插入语句合并为一批,然后使用Preparedstatement的commit方法一次性插入所有行。

2)为每次插入创建线程。每个线程插入一行。

PS:插入是通过Web API完成的,所以我们需要实时的状态(插入失败还是成功)。

最佳答案

下面的描述可能会回答。

是的,通常批量插入比一次单个插入更快,因为它避免了每个插入语句发生的中间通信。

但有时它会导致问题,因为插入/更新语句会获取表/行上的排他锁,这意味着当时没有其他进程/连接可以使用表。

如果您有多个进程同时使用数据库,其中一些正在从表中读取,有些正在写入,那么整个操作将在批量插入时被锁定/停止

因此,批量插入将比单个插入锁定表更长的时间,如果锁定时间更长并且数据库未针对它进行调整,则可能会导致其他进程出现问题。

如果您只是插入数据库而没有其他操作,则从文件进行批量插入(速度要快得多),如果您有其他进程,请考虑锁定调整批量插入频率。

答案在这里给出:Performance Multiple inserts or multiple values single insert

关于java - 在 MySQL 表中插入多行 : Threading vs BatchUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133832/

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