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。