0

这个问题涉及到这个问题:How to speed up inserting performance in PostgreSQL

所以,我有一个 java 应用程序,它在数据库中做了很多(大约十亿)插入PostgreSQL操作。它打开几个到同一个数据库的 JDBC 连接,以并行执行这些插入。正如我在提到的问答中所读到的:

从多个连接并行插入或复制。多少取决于硬件的磁盘子系统;根据经验,如果使用直连存储,您需要每个物理硬盘驱动器一个连接。

但就我而言,我的数据库只有一个磁盘存储

所以,我的问题是:在这种情况下打开多个连接真的有意义吗?由于 I/O 操作竞争,它会降低性能而不是期望增加吗?

为了澄清起见,这是带有实际postgresql流程负载的图片:

在此处输入图像描述

4

1 回答 1

-1

由于您在 Java 应用程序中提到INSERT过,我认为(使用普通 JDBC)COPY不是您想要的。在不使用JPA之类的 API 或Spring-data 之类的框架的情况下,我可以介绍一下addBatch()executeBatch()如果您还没有听说过这些:

/*
 the whole nine yards
 */
Connection c = ...;
PreparedStatement ps = c.prepareStatement("INSERT INTO table1(columnInt2,columnVarchar)VALUES(?,?)");

然后循环读取数据:

ps.setShort(1, someShortValue);
ps.setString(2, someStringValue);
ps.addBatch();  // one row at a time from human's perspective

准备好所有行的数据时:

ps.executeBatch();

我还可以推荐:

于 2014-02-06T01:24:17.137 回答