在某些情況下,遵循 thomas 寫入規則的時間戳協議是否允許非視圖序列化計劃?
我在教科書(Avi Silberschatz、Henry F. Korth 和 S. Sudarshan 的數據庫系統概念教科書)中遇到了以下內容 $ 6e $ ) 頁碼 686:
Thomas 的寫規則允許不衝突序列化但仍然正確的調度。允許的那些非衝突可序列化調度滿足視圖可序列化調度的定義(參見範例框)。
從以上幾行我了解到,時間戳協議遵循 Thomas 的寫入規則生成的每個調度都是視圖可序列化的。
現在讓我們來看看下面的小時間表: $ S: R_1(X), W_2(X), W_1(X) $ .
這個時間表 $ S $ 在遵循 Thomas 寫入規則的時間戳協議下是允許的。
序列化順序是 $ R_1(X), W_1(X). $
但我無法證明它是可序列化的視圖。
實際上我認為它是非視圖可序列化的,因為,
- 將串列順序視為 $ T_1, T_2 $
現在的最終值為 $ X $ 正在寫 $ T_2 $ . 所以不等價。 2. 下一個替代序列順序是 $ T_2, T_1 $
這裡, $ R_1(X) $ 將讀取的值 $ X $ 寫的 $ T_1 $ 不是兩個交易開始之前的原始價值。所以這也不是視圖等效的。
這裡出了什麼問題?請幫我解決這個問題。
給定的時間表 S 是:
T1 T2 ---- ----- R(X) W(X) W(X)
要成為可序列化的視圖,W2(X) 必須在 R1(X) 之前或 W1(X) 之後移動。但是,第一個會違反“初始讀取”規則,而第二個會違反“最後寫入”規則。
T2 在 T1 之後開始,因此具有更高的時間戳。當 T1 來寫 X 時,它會看到 T2 的時間戳。根據 Thomas 的寫規則,T1 的寫是無效的並且可以被刪除。然後給定的時間表變成
T1 T2 ---- ----- R(X) W(X)
現在 T2 的所有動作都發生在 T1 的所有動作之後 - 計劃是序列化的。
(你的問題是相反的,刪除 W2(X)。我認為這是一個錯誤。)
為了證明一個調度是可序列化的,只需要證明至少有一個等價的調度是串列的。沒有必要證明每一個可能的串列調度都是可以實現的。我同意 T2,T1 由於讀/寫依賴性,在原始時間表上不能查看可序列化。但是,T1,T2 在 Thomas 寫入規則下是可序列化的。