資料庫管理系統 (DBMS) 中的時間戳排序協議說明


時間戳排序協議確保事務在其衝突的讀寫操作中的可序列化。這是協議系統的責任,即衝突的任務對應根據事務的時間戳值執行。

當較舊的事務嘗試讀取/寫入已經被較新事務讀取或寫入的值時,就會發生衝突。只有當對該資料項的最後更新是由較舊的事務執行的,才能進行讀取或寫入。

否則,請求讀取/寫入的事務將被重啟並獲得新的時間戳。這裡不使用鎖,因此不會發生死鎖。

  • 事務 Ti 的時間戳記表示為 TS(Ti)。

  • 資料項 X 的讀取時間戳記表示為 R-timestamp(X)。

  • 資料項 X 的寫入時間戳記表示為 W-timestamp(X)。

在對資料項 X 成功執行讀取/寫入操作後,這些時間戳記將被更新。

在發生衝突操作時,較舊的事務優先於較新的事務。透過回滾和重啟事務來解決衝突。

事務規則

為了確保可序列化,使用以下規則:

規則 1 - 如果事務 Ti 發出 read(X) 操作。

如果 TS(Ti) < W-timestamp(X)

操作被拒絕。

如果 TS(Ti) >= W-timestamp(X)

執行操作。

所有資料項時間戳更新。

規則 2 - 如果事務 Ti 發出 write(X) 操作。

如果 TS(Ti) < R-timestamp(X)

操作被拒絕。

如果 TS(Ti) < W-timestamp(X)

操作被拒絕,Ti 回滾。

否則,執行操作。

Thomas 寫規則

此規則規定,如果 TS(Ti) < W-timestamp(X),則拒絕操作並回滾 Ti。

可以修改時間戳排序規則以使排程檢視可序列化。

無需使 Ti 回滾,“寫入”操作本身將被忽略。

效果 - Thomas 寫規則允許此類操作,是對基本時間戳排序協議的修改。在 Thomas 寫規則中,使用者忽略過時的寫入。

示例

S: f1(X) W2(X) W1(X)

檢查時間戳排序協議是否允許排程 S。

解決方案

X-----------------RTS------3
X----------------WTS------4
For f1(X) : TS(Ti) <WTS(X) i.e TS(T1)<WTS(X)
   3<0 (FALSE)

轉到 else 並執行寫入操作 W2(X) 和 WTS(X)=4

For W1(X): TS(Ti)<RTS(X) i.e TS(T1)<RTS(X)
      3<3 (FALSE)
   TS(T1)<WTS(X)
      3<4 (TRUE)
ROLLBACK

更新於:2021年7月6日

15K+ 瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告