是否可以配置 PostgreSQL,使偶尔的大量更新可以 运行 超快?

Can PostgreSQL be configured so that occasional mass updates can run super-fast?

我已经设置了一个 PostgreSQL 测试环境,它需要包含与生产数据库相同数量的数据(行数),并且配置大部分类似于生产以模拟正常事务的相同性能。

但是,它是一个测试环境,有时必须应用一些独特的、实验性的、临时的或临时的更改。比如在性能测试前添加或删除一些索引,重新计算某列的值以复制测试条件,转储并重新导入整个表等

有没有办法暂时中止数据完整性保证,以便尽快执行此类大规模更新?

例如,在MySQL中,您可以设置超大写缓冲区、禁用事务日志记录以及在事务提交时暂停磁盘刷新。 pgsql中有类似的东西吗?

部署环境为AWS EC2

您可以使用 ALTER TABLE ... SET UNLOGGED 禁用 WAL 日志记录,但请注意反向操作会将整个 table 转储到 WAL。

如果这不可行,您可以通过设置 max_wal_size hugh 来提高性能,从而获得更少的检查点。

通过设置 fsync = off.

禁用 WAL 刷新

请注意,第一个和第三个措施会在发生崩溃时破坏您的数据库。

The manual 有一章专门介绍数据库的初始加载。

您可以更改一些安全选项以加快速度:

还有一些相当不安全的选项可以让事情变得更快。不安全的含义:如果服务器崩溃,您可能会丢失所有数据 - 因此使用风险自负!

再次说明:通过更改上述两个设置,您可能会 丢失所有数据

要禁用 WAL,您还可以将所有表设置为 unlogged