持久性是一项数据库特性,它保证记录已提交的事务,即使服务器崩溃或断电。但是,持久性会增加大量的数据库开销,因此,如果你的网站不需要此类保证,PostgreSQL 可以配置为运行得更快。以下是你可以进行的配置更改,以在这些情况下提高性能。除非如下所述,否则在数据库软件崩溃的情况下仍会保证持久性;只有突然的操作系统崩溃才会在使用这些设置时造成数据丢失或损坏的风险。
将数据库集群的数据目录放在内存支持的文件系统(即 RAM 磁盘)中。这消除了所有数据库磁盘 I/O,但将数据存储限制为可用内存(以及可能的交换)的数量。
关闭 fsync;无需将数据刷新到磁盘。
关闭 synchronous_commit;在每次提交时可能不需要强制 WAL 写入磁盘。此设置确实有在 数据库 崩溃时丢失事务(尽管不会损坏数据)的风险。
关闭 full_page_writes;无需防止部分页面写入。
增加 max_wal_size 和 checkpoint_timeout;这会减少检查点的频率,但会增加 /pg_wal
的存储需求。
创建 未记录表 以避免 WAL 写入,尽管这会使表无法在崩溃时安全。