Conflic Serializable和兩階段鎖

Conflic Serializability

定義Conflicting Operations:


image.png

定義Conlict Serializable:


image.png

如果某種調(diào)度S使得事務(wù)的前驅(qū)圖是無(wú)環(huán)的,那么說(shuō)明這個(gè)調(diào)度S是conflict serializable,如果有環(huán),則說(shuō)明這個(gè)調(diào)度S不滿足conflict serializable。

Strict Two Phase Locking 就是在2PL的基礎(chǔ)之上,增加以下限制:
all locks are released together when transaction completes, either:

  1. Transaction has committed. OR
  2. Transaction has aborted.

以解決Cascading Aborts的問(wèn)題。

需要思考,為什么滿足無(wú)環(huán),就是可串行的?因?yàn)榭梢酝ㄟ^(guò)移動(dòng)操作,使得兩個(gè)T1和T2和串行的結(jié)果一樣。見(jiàn)https://www.youtube.com/watch?v=h8Xzy6DANzw

兩階段鎖

兩階段鎖是數(shù)據(jù)庫(kù)事務(wù)中的一種concurrency control method,它可以保證多個(gè)事務(wù)的可串行化(serializability)。說(shuō)白了就是保證事務(wù)的ACID。兩階段鎖協(xié)議可以保證調(diào)度是滿足Conlict Serializable的。

兩段鎖協(xié)議是指每個(gè)事務(wù)的執(zhí)行可以分為兩個(gè)階段:生長(zhǎng)階段(加鎖階段)和衰退階段(解鎖階段)。
加鎖階段:在該階段可以進(jìn)行加鎖操作。在對(duì)任何數(shù)據(jù)進(jìn)行讀操作之前要申請(qǐng)并獲得S鎖,在進(jìn)行寫(xiě)操作之前要申請(qǐng)并獲得X鎖。加鎖不成功,則事務(wù)進(jìn)入等待狀態(tài),直到加鎖成功才繼續(xù)執(zhí)行。
解鎖階段:當(dāng)事務(wù)釋放了一個(gè)封鎖以后,事務(wù)進(jìn)入解鎖階段,在該階段只能進(jìn)行解鎖操作不能再進(jìn)行加鎖操作。

另外要注意兩段鎖協(xié)議和防止死鎖的一次封鎖法的異同之處。一次封鎖法要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議;但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖。

可以證明,若并發(fā)執(zhí)行的所有事務(wù)均遵守兩段鎖協(xié)議,則對(duì)這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的。
我們可以證明,在使用兩段鎖協(xié)議的情況下,T1、T2、Tn的前驅(qū)圖里,是不會(huì)有環(huán)路出現(xiàn)的。證明的方法可以用反證法。不妨假設(shè)T1 T2 T3的前驅(qū)圖,形成了一個(gè)環(huán):T1 -> T2 -> T3 -> T1,并且T1、T2、T3都遵守兩段鎖,那么就有下圖:

image.png

A、B、C是需要加鎖的資源。
t1 t2 t3...t7是各個(gè)事務(wù)中加鎖、解鎖的時(shí)間。
由兩階段鎖的協(xié)議可知,T1必須釋放了A的鎖,T2才可能加上A的鎖,所以t2<t3。同理,可知:
t1 < t2 < t3 < t4 < t5 < t6 < t7。
t2是release(A)操作,t7是lock(c)操作,我們知道兩階段鎖協(xié)議中,開(kāi)始release鎖后,就不再允許加鎖了,得出矛盾。

參考資料

  1. 數(shù)據(jù)庫(kù)中的two phase locking
  2. 如何畫(huà)前驅(qū)圖
  3. https://www.youtube.com/watch?v=V27Myhkj4Mg
  4. https://www.youtube.com/watch?v=h8Xzy6DANzw
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容