兩段鎖協定的內容
1.
2. 在釋放一個封鎖之後,事務不能再獲得任何其他封鎖。
“兩段”鎖的含義
事務分為兩個階段:
第一階段是獲得封鎖,也稱為擴展階段;
第二階段是釋放封鎖,也稱為收縮階段。
例:
事務1的封鎖序列:
Slock A ... Slock B ... Xlock C ... Unlock C ... Unlock B ... Unlock A;
事務2的封鎖序列:
Slock A ... Unlock A ... Slock B ... Xlock C ... Unlock C ... Unlock B;
事務1遵守兩段鎖協定,而事務2不遵守兩段協定。
並行執行的所有事務均遵守兩段鎖協定,則對這些事務的所有並行調度策略都是可串
行化的。
所有遵守兩段鎖協定的事務,其並行執行的結果一定是正確的。事務遵守兩段鎖協定
是可串列化調度的充分條件,而不是必要條件。可串列化的調度中,不一定所有事務
都必須符合兩段鎖協定。
兩段鎖協定與防止死鎖的一次封鎖法
一次封鎖法要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執
行,因此一次封鎖法遵守兩段鎖協定,但是兩段鎖協定並不要求事務必須一次將所有
要使用的數據全部加鎖,因此遵守兩段鎖協定的事務可能發生死鎖。
兩段鎖協定與三級封鎖協定
兩類不同目的的協定
兩段鎖協定:保證並發調度的正確性
三級封鎖協定:在不同程度上保證數據一致性
遵守第三級封鎖協定必然遵守兩段協定