two-phase locking protocol 2pl協議,兩段封鎖協議
two-phase transaction and two-phase locking protocol
在乙個事務中,如果加鎖動作都在釋放鎖動作之前稱此事務為兩段事務。上述加鎖的限制稱兩段封鎖協議。兩段事務可截然為兩段:擁有的鎖增長階段growing phase),擁有的鎖縮減段段(shrinking phase)。兩段事務中,一旦開始釋放第乙個鎖之後,再不准對任何資料物件加鎖。
例:well formed transaction, 合式事務:
乙個事務如果遵守先加鎖,後操作的原則,則此事務叫合式事務。
定理:如果所有事務均為合式、兩段事務,則它們的任何排程都是可序列化的。
證明:用反證法。設滿足定理條件的事務集有乙個排程是不可序列化的,則其前趨圖中必有迴路,設為:
ti1->ti2->. . .->tip->ti1ti1->ti2
表示兩事務中至少有乙個資料物件必須由ti1必先加鎖進行操作,釋放後,ti2才能加鎖操作,依次tip->ti1也有此種等待,所以ti1不能是兩段事務。與命題違,滿足定理條件的事務集是可序列化。證畢。
·2pl協議是排程可序列化的充分條件,但2pl協議不是排程可序列化的必要條件。
反例:s=r2(x)w3(x)r1(y)w2(y);
s'=r1(y)r2(x)w2(y)w3(x);
s'與s等價,且是序列排程,所以s是可序列化排程,但t1必須先釋放y上的鎖後t2才能對y加鎖並操作,所以s不是兩段事務。
雖然2pl協議不是可序列化的必要條件,由於2pl協議簡單,一般dbms都用它來實現排程可序列化。
strict 2pl protocol嚴格的2pl協議
·所有鎖均在eot時釋放,可嚴格避免連鎖捲回,且滿足2pl協議,叫嚴格的2pl協議。
·嚴格2pl協議簡單,可靠,應用很廣。但不利於提高系統併發度,尤其當乙個事務因長期等待某一資源時,它的鎖就長期時間不能釋放 。
·加鎖是由dbms管理的。
·dbms管理乙個鎖表,它是dbms的公共資源,訪問頻繁,置於公共記憶體區。
事務對任一資料物件加鎖,均向dbms申請,根據鎖表狀態和協議,dbms同意並為其加鎖,或令其等待。
·鎖表只反映資料資源使用的暫時狀態,如系統失效,鎖表自然也失效,無保留價值。
資料庫的2PL兩段鎖協議與正規化
1.2pl 2pl定義 1.所有的讀寫操作之前均需加鎖 2.解鎖操作後不允許再出現加鎖操作 s鎖 加s鎖後其他事務可讀,不可寫,直至加鎖事務結束 x鎖 加x鎖後其他事務均不可以讀或寫,直至事務結束 事務執行的過程分為兩個階段,一是獲得封鎖階段,二是釋放封鎖階段 2pl可能產生死鎖 2pl可以防止讀髒...
MySQL的兩階段所協議2PL
實驗總結 經常聽到別人說2pl,猛的一聽當時真的是一臉懵逼的感覺,啥意思?2pl是什麼玩意?後來又聽人說兩階段鎖協議,這個又是什麼?我咋沒有聽過呢?後來才知這是mysql中的乙個術語 2pl two phase locking 翻譯成中文就是兩階段鎖協議。廢話不多說,我們來用實際的例子體驗一把。實驗...
兩段鎖協議
我們都知道,事務排程一般有序列排程和並行排程,那首先來了解幾個概念。1 併發控制 所謂併發控制,是指多使用者共享的系統中,許多使用者可能同時對同一資料進行操作。2 排程 指的是事務的執行次序。3 序列排程 多個事務依次序列執行,且只有當乙個事務的所有操作都執行完後才執行另乙個事務的所有操作。只要是序...