2017-07-06 18 views
0

我想能夠禁用PostgreSQL自動檢查點。如何防止PostgreSQL做出不受控制的檢查點?

我只想在磁盤上fsync wal文件而不保存在shared_buffer中所做的更改。

我將checkpoint_segmentscheckpoint_timeout設置爲較大的值,但仍會產生額外的檢查點。

我不想檢查點,即使他需要交換頁面或內存不足。

回答

0

還有其他原因檢查點:

  • 恢復已完成(在服務器崩潰後可能發生)。
  • 開始在線備份。
  • 數據庫關閉。
  • CREATE DATABASE之前和之後。
  • 之後DROP DATABASE
  • ALTER DATABASE SET TABLESPACE之前和之後(你可能不會每天都這麼做)。
  • DROP TABLESPACE期間(同上)。
  • 而且,當然還有一個明確的CHECKPOINT命令。

我希望我沒有忘記任何東西–其中一個會導致你觀察到的檢查點?

設置爲log_checkpointson,那麼日誌文件將在checkpoint starting消息中顯示檢查點的原因。

您確定避免檢查點是個好主意嗎?他們是需要的,以便您可以在出現問題時恢復數據庫。

+0

我認爲**數據庫關機**觸發了一個檢查點,就我而言。我意識到**不是一個好的主意來避免檢查點**,但我需要的是隻能手動執行'CHECKPOINT' **,是的,我知道如果一些不好的事情(例如:系統崩潰)所有更新都**丟失** ...這可能嗎? (對檢查點進行「全面控制」) – Johnny

+0

這並不是說更新丟失了,但恢復需要很長時間(從最後一個檢查點開始)。你的'pg_xlog'目錄將會非常壯大。如果你從'pg_xlog'手動刪除文件,你會破壞你的數據庫。沒有辦法避免我上面列出的檢查點。 –