DBMS基於日誌的恢復

DBMS基於日誌的恢復 -

  • 日誌是一系列記錄。 每個事務的日誌都保存在一些穩定的存儲中,以便在發生任何故障時,可以從那裏恢復。
  • 如果對數據庫執行任何操作,則它將記錄在日誌中。
  • 但是,應該在資料庫中應用實際事務之前完成存儲日誌的過程。

假設有一項事務,它執行修改學生所在的城市。 為此事務編寫以下日誌。

  • 啟動事務時,它會寫入“啟動”日誌。
    <Tn, Start>
    
  • 當事務城市從“Haikou”修改為“Shanghai”時,則會將另一個日誌寫入該檔。
    <Tn, City, 'Haikou', 'Shanghai' >
    
  • 當事務完成時,它會寫入另一個日誌以指示事務結束。
    <Tn, Commit>
    
    修改資料庫有兩種方法:

1. 延期資料庫修改:

  • 如果事務在提交之前不修改資料庫,則會發生延遲修改技術。
  • 在此方法中,將創建所有日誌並將其存儲在穩定存儲中,並在事務提交時更新資料庫。

2. 立即修改資料庫:

  • 如果在事務仍處於活動狀態時發生資料庫修改,則會發生立即修改技術。
  • 在這種技術中,每次操作後都會立即修改資料庫。 它遵循實際的資料庫修改。

使用日誌記錄恢復

當系統崩潰時,系統會查詢日誌以查找需要撤銷的事務以及需要重做的事務。

  • 如果日誌包含記錄<Ti,Start><Ti,Commit><Ti,Commit>,則需要重做事務Ti。
  • 如果日誌包含記錄<Tn,Start>但不包含<Ti,commit><Ti,abort>的記錄,則需要撤銷事務Ti。

上一篇: DBMS故障分類 下一篇: DBMS檢查點