14.5. 非耐用设置

耐用性是一种数据库功能,即使服务器崩溃或断电,也可以保证记录已提交的事务。但是,持久性会增加大量的数据库开销,因此,如果您的站点不需要这样的保证,则可以将 PostgreSQL 配置为运行得更快。以下是在这种情况下可以进行以提高性能的配置更改。除非另有说明,否则在数据库软件崩溃的情况下仍然可以保证持久性;使用这些设置时,只有突然的 os 停止才会造成数据丢失或损坏的风险。

  • 将数据库集群的数据目录放置在内存支持的文件系统(即 RAM 磁盘)中。这样就消除了所有数据库磁盘的 I/O,但将数据存储限制为可用内存量(可能是交换空间)。

  • 关闭fsync;无需将数据刷新到磁盘。

  • 关闭synchronous_commit;可能无需在每次提交时都强制将 WAL 写到磁盘。如果* database *崩溃,此设置会带来 Transaction 丢失(但不会破坏数据)的风险。

  • 关闭full_page_writes;没有必要防止部分页面写入。

  • 增加max_wal_sizecheckpoint_timeout;这减少了检查点的频率,但增加了/pg_wal的存储要求。

  • 创建unlogged tables以避免 WAL 写入,尽管它会使表成为非崩溃安全的。