概念
兩段鎖協定是指所有事務必須分兩個階段對數據項加鎖和解鎖:
1. 在對任何數據進行讀、寫操作之前,要申請並獲得對該數據的封鎖。
2. 每個事務中,所有的封鎖請求先於所有的解鎖請求。
例如事務T1遵守兩段鎖協定,其封鎖序列是:
Lock A, Read A, A:=A+100, Write A, Lock B, Unlock A, Read B, Unlock B, Commit;
可以證明,若並發執行的所有事務均遵守兩段鎖協定,則對這些事務的任何並發調度策略都是可串列化的。
另外要注意兩段鎖協定和防止死鎖的一次封鎖法的異同之處。一次封鎖法要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行,因此一次封鎖法遵守兩段鎖協定;但是兩段鎖協定並不要求事務必須一次將所有要使用的數據全部加鎖,因此遵守兩段鎖協定的事務可能發生死鎖。