gpt4 book ai didi

java - JDBC 中的批量插入 - 单个事务会慢多少?

转载 作者:行者123 更新时间:2023-12-01 14:39:35 28 4
gpt4 key购买 nike

我刚刚发现 JDBC 的 addBatch 操作,如果给出“INSERT INTO mytable (id, name) VALUES (?, ?)”将创建如下内容:

BEGIN TRANSACTION
INSERT INTO mytable (id, name) VALUES (1, "a");
INSERT INTO mytable (id, name) VALUES (2, "b");
...
END TRANSACTION

与这样的语句相比:“INSERT INTO mytable (id, name) VALUES (1, "a"), (2, "b"), .. " 慢了多少是否会发生大规模交易? I/O 的差异会很重要吗?

最佳答案

PgJDBC 批处理通常不如多值 INSERT 快,但它更方便。

到目前为止,最有效的选项是通过PgJDBC's support for COPY使用COPY命令.

第二个选项是打开一个事务,进行批量多值插入(例如每次插入 10 行),然后进行一组单行插入以弥补差异,然后提交。

PgJDBC 批处理不应比打开事务、准备语句、循环使用准备好的语句发送每一行的数据、然后执行显式提交快得多。我不认为它目前在一个批处理中同时有多个正在运行的语句,但我不确定这一点,如果确实如此,当网络延迟很小时,这将使批处理速度显着加快因素。

我建议对其进行测试并实际了解其影响。

关于java - JDBC 中的批量插入 - 单个事务会慢多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115349/

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