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