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