托馬斯寫入規則


托馬斯(Thomas)寫入規則為協定提供了可序列化順序的保證。 它改進了基本時間戳排序演算法。

基本的托馬斯寫規則如下:

  • 如果TS(T)< R_TS(X),則事務T被中止並回滾,並且操作被拒絕。
    如果TS(T)< W_TS(X)則不執行事務的W_item(X)操作並繼續處理。
    如果條件1和條件2都不發生,則允許通過事務Ti執行WRITE操作並將W_TS(X)設定為TS(T)

如果使用托馬斯寫規則,那麼可以允許一些可序列化的時間表,如同給定圖中的時間表所示,不會發生序列化衝突:

圖:不可衝突序列化的可序列化排程

在上圖中,T1讀取並在T1寫入相同資料項之前。此排程不會與可序列化衝突。

托馬斯編寫規則檢查,任何事務都不會看到T2的寫入。 如果刪除事務T2中的寫操作,則可以獲得衝突可序列化的排程,如下圖所示。