解釋DBMS中可恢復性的概念


非序列化排程的特徵如下:

  • 事務可能是或可能不是一致的。

  • 事務可能是或可能不是可恢復的。

所以,現在讓我們談談可恢復性排程。

我們都知道可恢復和不可恢復是非序列化技術,

不可恢復排程

如果一個事務從一個未提交的事務中執行髒讀操作,並在讀取該值的事務之前提交,則這樣的排程稱為不可恢復排程。

示例

讓我們考慮如下所示的兩個事務排程:

T1T2
Read(A)
Write(A)
-Read(A) ///髒讀
-Write(A)
-Commit
-
Rollback

上述排程是不可恢復的,原因如下:

  • 事務T2正在對A執行髒讀操作。

  • 事務T2也在事務T1完成之前提交。

  • 事務T1隨後失敗並回滾。

  • 事務T2讀取了不正確的值。

  • 最後,事務T2無法恢復,因為它已經提交。

可恢復排程

如果任何執行從未提交事務的髒讀操作的事務,並且其提交操作也被延遲,直到未提交的事務被提交或回滾,則此類排程稱為可恢復排程。

示例

讓我們考慮如下所示的兩個事務排程:

T1T2
Read(A)
Write(A)
-Read(A) ///髒讀
-Write(A)
-
-
Commit

Commit // 延遲

上述排程是可恢復的排程,原因如下:

  • 事務T2對A執行髒讀操作。

  • 事務T2的提交操作被延遲,直到事務T1提交或回滾。

  • 事務稍後提交。

  • 在上述排程中,現在允許事務T2提交,而T1尚未提交。

  • 在這種情況下,事務T1失敗,而事務T2仍然有機會透過回滾來恢復。

更新於:2021年7月8日

8K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告