什麼時候我們說排程是衝突等價的(DBMS)?


如果兩個排程的任何兩個衝突操作的順序相同,則稱這兩個排程是衝突等價的。

此外,如果可以透過交換非衝突指令的執行順序從排程 S 獲得序列排程 S',則併發排程 S 與序列排程 S' 衝突等價。

示例 1

即使排程 S1 使資料庫保持一致狀態,我們也無法將其轉換為序列排程,因此我們得出結論,該排程與任何序列排程都不衝突等價。

因此,我們不僅要考慮讀寫操作,還要考慮中間操作,這將導致一種新的可序列化形式,稱為檢視可序列化。

因此,透過檢視上述事務,S1 是 S2 的衝突等價。

示例 2

如果兩個排程的任何兩個衝突操作的順序相同,則稱這兩個排程是衝突等價的。

衝突操作的先決條件是:

  • 兩個衝突操作必須屬於兩個不同的事務。

  • 它們必須作用於同一個資料庫或變數,例如 x。

  • 至少有一個操作必須是“寫”。例如,操作應該是讀-寫;寫-寫;寫-讀

排程 1排程 2
R1(x)R1(y)
W2(x)R1(x)
R1(y)W2(x)

在此示例中,

  • R(x) - 對變數 x 的讀取操作

  • W(x) - 對變數 x 的寫入操作

  • R1W2 是衝突操作。由於兩個排程中的順序相同。

更新於: 2021-07-06

5K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告