DBMS 的 Recovery Management


DBMS透過 Database Recovery,將一個通常是inconsistent的狀態退回到先前consistent的狀態。狀態的儲存點也是基於 Transaction 的 Atomic 性質,以Transaction的完成點為儲存點。造成database異常的原因有:

  • 軟體/硬體失敗
  • 人為意外(有意或非有意)
  • 自然災害

Transaction Recovery

一些與Recovery相關的機制:

  • Write-ahead-log protocol: 在資料庫更新前,transaction logs會先被寫好,以防資料庫更新失敗沒有依據可循。
  • Redundant transaction logs: 多重複備份transaction logs(可於不同儲存硬體)以免單一硬體壞掉而無法復原資料。
  • Buffer: 將資料從資料庫複製一份進 RAM 的 buffer,Transaction的操作在此buffer,可以在最後或某一時間點才寫進資料庫。
  • Checkpoints: 將 Buffer 寫進資料庫,同步Transaction log。

Recovery 的程序

可分為兩種:

  • Deferred-write technique (deferred update): 從開頭或先前checkpoint在到達下一個checkpoint或commit前的過程都沒有寫進資料庫。
  • Write-through technique (immediate update): 從開頭或先前checkpoint在到達下一個checkpoint或commit前的過程都寫進資料庫。

兩種程序寫入資料庫的時間不同,依據其狀態去執行Transaction的redo或rollback。

dbms 

See also