持久性是数据库的一项功能,它可以保证记录已提交的事务,即使服务器崩溃或断电也是如此。但是,持久性会增加大量的数据库开销,因此如果您的站点不需要这种保证,则可以配置 PostgreSQL 以更快的速度运行。以下是一些您可以进行的配置更改,以在这些情况下提高性能。除非在下面另有说明,否则在数据库软件崩溃的情况下仍然可以保证持久性;只有突然的操作系统崩溃才会导致在使用这些设置时存在数据丢失或损坏的风险。
将数据库集群的数据目录放置在内存支持的文件系统中(即,RAM磁盘)。这消除了所有数据库磁盘 I/O,但将数据存储限制为可用内存(可能还有交换空间)的数量。
关闭 fsync;没有必要将数据刷新到磁盘。
关闭 synchronous_commit;可能没有必要在每次提交时强制将WAL写入到磁盘。此设置在 数据库 崩溃的情况下确实存在事务丢失的风险(但不会导致数据损坏)。
关闭 full_page_writes;没有必要防止部分页面写入。
增加 max_wal_size 和 checkpoint_timeout;这会降低检查点的频率,但会增加 /pg_wal
的存储需求。
创建未记录的表 以避免WAL写入,尽管这会使表不具备崩溃安全性。
如果您在文档中发现任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。