gpt4 book ai didi

postgresql - 提高PostgreSQL的数据插入速度

转载 作者:行者123 更新时间:2023-11-29 13:12:59 25 4
gpt4 key购买 nike

我遇到了 PostgreSQL 数据写入非常慢的问题。

我使用 Java(使用 JDBC)开发了应用程序,将数据插入到 PostgreSQL 数据库中。它在我们的远程开发服务器上运行良好。但是,当我将其部署到生产服务器后,却出现了问题。

生产服务器上 PostgreSQL 的插入速度仅为200000K 条记录~150 条记录/秒,而相同数据集的插入速度为~1000 条记录/秒在开发服务器上。

首先,我尝试更改 postgresql.conf 中的配置,如下所示:

effective_cache_size = 4GB
max_wal_size = 2GB
work_mem = 128MB
shared buffers = 512MB

我更改配置并重启后,只影响查询速度,而插入速度没有变化(~150条记录/秒)。

我检查了我的服务器内存信息,有大量可用内存~4GB。插入器仅使用 8GB 的​​ 0.5% (~40MB)。

所以我的问题是:

这是否是存储磁盘的问题,例如SSD和HDD或虚拟磁盘和 body 等?为什么我更改了配置,插入速度还是很慢?有什么办法吗为了提高插入速度?

注意:该问题与插入查询结构无关。我在其他地方相同的条件下使用了相同的查询(我设置了一个两台服务器中的环境以同样的方式)。我不知道为什么开发服务器 (4GB) 比生产服务器运行得更好(8GB)。

最佳答案

唯一影响 INSERT 性能的参数是 max_wal_size。高值可以防止频繁的检查点。

在数据库服务器上使用 iostat -x 1 来查看磁盘的繁忙程度。如果它们非常繁忙,则可能存在 I/O 瓶颈。也许您的测试服务器上的 I/O 子系统更好?

如果您在许多小事务中运行 INSERT,则 WAL 的 fsync 可能会成为瓶颈。症状是磁盘繁忙,没有执行太多 I/O。

在这种情况下,在较大的事务中批处理 INSERT。您观察到的差异可能是由于不同的配置造成的:也许您在测试服务器上将 synchronous_commit 或(可怕的字典!)fsync 设置为 off .

关于postgresql - 提高PostgreSQL的数据插入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548446/

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