檢查兩個排程是否檢視等價(DBMS)


有兩種型別的可序列化,如下所示:

檢視可序列化

如果一個排程與一個序列排程檢視等價,則該排程是檢視可序列化的。

它遵循的規則如下:

  • T1 讀取 A 的初始值,然後 T2 也讀取 A 的初始值。

  • T1 讀取 T2 寫入的值,然後 T2 也讀取 T1 寫入的值。

  • T1 寫入最終值,然後 T2 的寫操作也是最終值。

衝突可序列化

它以與某些序列執行相同的方式對任何衝突操作進行排序。如果兩個操作作用於相同的資料項,並且其中一個操作是寫操作,則稱這兩個操作衝突。

這意味著,

  • Readi(x) readj(x) - 非衝突讀-讀操作

  • Readi(x) writej(x) - 衝突讀-寫操作。

  • Writei(x) readj(x) - 衝突寫-讀操作。

  • Writei(x) writej(x) - 衝突寫-寫操作。

現在讓我們找出排程是否檢視等價。

如果一個排程與一個序列排程檢視等價,則該排程是檢視可序列化的。如果滿足以下三個規則,則排程是檢視可序列化的:

  • 規則 1 - 如果 Ti 最初讀取資料,在此之後 Tj 寫入相同的資料,在給定的排程中。此序列必須在事務組合(讀寫操作)中遵循。

  • 規則 2 - 如果 Ti 最初寫入資料,在此之後 Tj 讀取相同的資料,在給定的排程中。此序列必須在事務組合(寫讀操作)中遵循。

  • 規則 3 - 如果 Ti 寫入資料,在此之後 Tj 最終寫入資料。此序列必須在事務組合(寫-寫操作)中遵循。

示例

R1(X) W2(X) W1(X),建立所有可能的事務組合。我們有 2 個事務,因此組合為 - <T1, T2> 和 <T2, T1>。

  • 規則 1 - T1 最初讀取,在此之後 T2 寫入相同的資料,這意味著事務序列必須是“T1 後跟 T2”。因此,刪除“T1 不後跟 T2”的以下組合,即 <T2, T1>

  • 規則 2 - T2 最初寫入,在此之後沒有事務讀取相同的資料。因此,我們保留所有事務組合,這意味著規則 2 沒有刪除任何組合。

  • 規則 3 - T1 最終寫入資料,這意味著 T1 必須最後出現,因此刪除“t1 不最後出現”的以下組合。 <T1, T2>

因此,沒有組合剩下以滿足檢視可序列化。

結論

給定的排程不是檢視可序列化的。

更新於: 2021-07-08

372 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告