什麼時候我們說排程是衝突等價的(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 是衝突操作。由於兩個排程中的順序相同。
廣告