DBMS 的 Concurrency Control 方法:Time Stamping Methods


Time Stamping Method (時間標記法) 為每個Transaction做時間標記,每個時間標記都需要符合唯一性遞增性。當兩個Transactions發生Lock衝突,會以時間標記順序為考量,將其中一個Rollback並重新加入排程。這樣的設計,雖然確保了Serializability,也因此花較多時間及資源在記錄時間 (last read time and last update time) 以及Transactions的暫停、重新安排等。

當使用時間標記法,發生Transactions的Lock衝突時,主要有兩種方案可以考量,分別是 Wait/Die 和 Wound/Wait ,規則如下:

發生Lock衝突的Transactions 目前擁有Lock的Transaction WAIT/DIE WOUND/WAIT
T1(時間標記早) T2 T1等待T2完成且釋放鎖 T2 rollback,T2維持原時間標記重新排程
T2(時間標記晚) T1 T2 rollback,T2維持原時間標記重新排程 T2等待T1完成且釋放鎖

時間標記法常發生Transactions間的等待,並產生Dead Lock。預防Dead Lock的方式之一是設定Time-out。

dbms 

See also