持久性是資料庫的一項功能,可保證即使伺服器崩潰或斷電,也能記錄已提交的事務。然而,持久性會增加資料庫的顯著額外開銷,因此如果您的站點不需要這樣的保證,可以配置 PostgreSQL 以更快地執行。以下是可以進行的配置變更,以在這些情況下提高效能。除非另有說明,否則在資料庫軟體崩潰的情況下,仍然保證持久性;只有作業系統突然崩潰才會在使用這些設定時產生資料遺失或損毀的風險。
將資料庫叢集的資料目錄放置在記憶體支援的檔案系統中(即,RAM磁碟)。這消除了所有資料庫磁碟 I/O,但將資料儲存限制為可用記憶體的數量(以及可能的交換空間)。
關閉 fsync;無需將資料刷新到磁碟。
關閉 synchronous_commit;可能不需要強制WAL在每次提交時將寫入磁碟。在 資料庫 崩潰的情況下,此設定確實存在事務遺失的風險(但不會造成資料損毀)。
關閉 full_page_writes;無需防範部分頁面寫入。
增加 max_wal_size 和 checkpoint_timeout;這會降低檢查點的頻率,但會增加 /pg_wal
的儲存需求。
建立 unlogged tables 以避免WAL寫入,儘管這會使表不具備崩潰安全性。
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表單報告文件問題。