描述預先寫入記錄

已完成

當資料庫中進行變更,例如 INSERTS 或 DELETES 時,這些變更會先寫入記錄檔,然後才寫入磁碟上的數據檔。 這項作業稱為預先寫入記錄,因為變更會寫入記錄檔,再將變更認可至數據檔。 如果發生問題,例如電源遺失,記錄檔一律會保存最新的數據,並可用來確保資料庫處於一致狀態。

第二個優點是先將變更寫入記錄檔,即可以批次方式寫入數據表和索引的變更,而不是個別寫入。 此程式可減少讓數據表和索引保持在最新狀態所需的磁碟寫入數目。 寫入記錄的速度很快,因為它們會循序完成。 對數據表和索引的寫入速度較慢,可以安全地以批次方式完成,因為所有數據都可以從記錄檔復原。 對於通常牽涉到許多小型更新的工作負載,效能會改善。

注意

針對 PostgreSQL 的內部部署實作,記錄檔會儲存在 pg_wal 目錄中。 適用於 PostgreSQL 的 Azure 資料庫不會提供文件系統的存取權,因此您不需要擔心記錄檔的實體記憶體。

有幾個伺服器參數可讓您控制先行寫入日誌的運作方式,並針對您的工作負載進行優化。

  • commit_delay - 交易認可和將記錄檔排清至磁碟之間的延遲。
  • wal_buffers - 共用記憶體中用於預先寫入記錄的磁碟頁面緩衝區數目(WAL)。
  • max_wal_size - 在觸發自動檢查點之前,讓 WAL 成長的大小上限。
  • wal_writer_delay - WAL 寫入器所執行 WAL 排清之間的時間間隔。
  • wal_compression - 是否對 WAL 檔案中的整頁寫入進行壓縮。
  • wal_level - 決定將多少資訊寫入 WAL。 允許的值為 REPLICA 或 LOGICAL。

時間點還原

預先寫入記錄 (WAL) 的主要目的是在發生當機時確保資料庫一致性和持久性。 內部部署版本的 PostgreSQL 可讓記錄做為封存,讓您使用組態設定 archive_modearchive_command還原到某個時間點。

適用於 PostgreSQL 的 Azure 資料庫是受控服務,不允許存取基礎文件系統。 不過,它確實包含伺服器的自動完整備份,包括所有資料庫。 此備份可讓您將數據重新建立至某個時間點。 備份會自動排程,並每天完成一次。 如果您需要還原,最多可以還原為保留備份所指定的天數,最多 35 天。 若要指定應該保留備份的時間長度:

  1. 在 Azure 入口網站中,流覽至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
  2. 從 [概觀] 區段中,選取您的 組態
  3. 在 [備份] 下,尋找 備份保留期間 (以天為單位)。 滑桿列可讓您選取要保留備份的天數。
  4. 選取 儲存 以保留變更。