2014-01-16 47 views
0

重做當我們在數據庫恢復使用撤銷和重做操作?例如考慮在考試(不做作業)撤消並在數據庫恢復

考慮在銀行帳戶上兩筆交易的以下日誌序列提出以下問題,以 初始餘額12000,即轉移2000按揭付款,然後應用 一5%的利息。

  1. T1開始
  2. T1乙舊= 1200新= 10000
  3. T1老了= 0新= 2000
  4. T1提交
  5. T2開始
  6. T2乙舊= 10000新= 10500
  7. T2承諾

假設數據庫系統c在記錄日誌記錄7之前發生皮疹。當 系統重新啓動,所有事務都進行撤消和重做操作?

所有我這裏知道的是,如果系統崩潰之後提交寫入日誌,並刷新緩衝區到二級存儲之前,我們需要重做這些交易。但是在寫入提交日誌條目之前,系統崩潰。所以如果我們撤消記錄2和3,它會足夠嗎?

+0

爲什麼你會撤消記錄2和3?他們是哪個交易的一部分? –

+0

@Damien_The_Unbeliever:我不是很清楚這個概念。但如果我們不撤銷這些交易,我們如何保持一致性。 – Unni

+0

@Damien_The_Unbeliever:你能否爲此提供一個答案 – Unni

回答

0

如果數據庫崩潰在點7處,直到所有點4(含)是已經在磁盤上。這是提交提供的保證(假定沒有使用像異步提交這樣的特殊功能)。

在恢復過程中基本上點4後的狀態被恢復。