postgresql:恢复数据库备份非常慢,已用资源未得到充分利用

postgresql: Restoring database backup is very slow and used resources are underutilized significantly

我正在尝试在我的个人计算机上恢复 postgresql 数据库的备份。我的 OS 是 Ubuntu 18,我使用 14 版本的 postgresql。 .sql 文件的体积是 52G,但在等待 6 小时后,目标数据库的体积仅增加到 120 MB。然后我更改了我默认的一些参数 postgres.conf:

work_mem = 32MB
shared_buffers = 4GB
maintenance_work_mem = 2GB
full_page_writes = off
autovacuum = off
wal_buffers = -1

但速度基本保持不变。 INSERT 期间的资源利用率如下:

提前谢谢你。 这里使用的命令是 sudo -u postgres psql lom < psql_long_small_dump

psql 将在单个线程中恢复转储(大多数情况下,CREATE INDEX 可以并行化),因此您不会以这种方式耗尽资源。如果使用自定义格式转储 (pg_dump -F c),您会更幸运,您可以使用 pg_restore -j 4 左右在多个线程中恢复它。

您更改的参数似乎是随机的。要尽可能加快当前的恢复过程,请设置以下内容:

wal_level = minimal  # requires a restart
maintenance_work_mem = 2GB
max_wal_size = 20GB  # as big as you want

并使用 psql -1 恢复,以便所有内容都在单个事务中运行。