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