版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 中國人民大學信息學院 數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第十一章 并發(fā)控制問題的產(chǎn)生多用戶數(shù)據(jù)庫系統(tǒng)的存在 允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)飛機定票數(shù)據(jù)庫系統(tǒng)銀行數(shù)據(jù)庫系統(tǒng) 特點:在同一時刻并發(fā)運行的事務數(shù)可達數(shù)百個 問題的產(chǎn)生(續(xù))不同的多事務執(zhí)行方式 (1)事務串行執(zhí)行每個時刻只有一個事務運行,其他事務必須等到這個事務結束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點T1T2T3事務的串行執(zhí)行方式問題的產(chǎn)生(續(xù))(2)交叉并發(fā)方式(Interleaved Concurrency)在單處理機系統(tǒng)中,事務的并行執(zhí)行是這些并行事務的并
2、行操作輪流交叉運行單處理機系統(tǒng)中的并行事務并沒有真正地并行運行,但能夠減少處理機的空閑時間,提高系統(tǒng)的效率問題的產(chǎn)生(續(xù))事務的交叉并發(fā)執(zhí)行方式問題的產(chǎn)生(續(xù)) (3)同時并發(fā)方式(simultaneous concurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務,多個處理機可以同時運行多個事務,實現(xiàn)多個事務真正的并行運行問題的產(chǎn)生(續(xù))事務并發(fā)執(zhí)行帶來的問題會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況 可能會存取和存儲不正確的數(shù)據(jù),破壞事務一致性和數(shù)據(jù)庫的一致性第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6
3、 封鎖的粒度11.7 小結11.1 并發(fā)控制概述并發(fā)控制機制的任務對并發(fā)操作進行正確調度保證事務的隔離性保證數(shù)據(jù)庫的一致性T1的修改被T2覆蓋了!并發(fā)控制概述(續(xù))并發(fā)操作帶來數(shù)據(jù)的不一致性實例例1飛機訂票系統(tǒng)中的一個活動序列 甲售票點(甲事務)讀出某航班的機票余額A,設A=16; 乙售票點(乙事務)讀出同一航班的機票余額A,也為16; 甲售票點賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫; 乙售票點也賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫 結果明明賣出兩張機票,數(shù)據(jù)庫中機票余額只減少1 并發(fā)控制概述(續(xù))這種情況稱為數(shù)據(jù)庫的不一致性,是由并發(fā)操作引起的。
4、在并發(fā)操作情況下,對甲、乙兩個事務的操作序列的調度是隨機的。若按上面的調度序列執(zhí)行,甲事務的修改就被丟失。原因:第4步中乙事務修改A并寫回后覆蓋了甲事務的修改并發(fā)控制概述(續(xù))并發(fā)操作帶來的數(shù)據(jù)不一致性丟失修改(Lost Update)不可重復讀(Non-repeatable Read)讀“臟”數(shù)據(jù)(Dirty Read)記號R(x):讀數(shù)據(jù)xW(x):寫數(shù)據(jù)x 1. 丟失修改兩個事務T1和T2讀入同一數(shù)據(jù)并修改,T2的提交結果破壞了T1提交的結果,導致T1的修改被丟失。上面飛機訂票例子就屬此類 丟失修改(續(xù))T1T2 R(A)=16R(A)=16 AA-1 W(A)=15WAA-1W(A)=
5、15丟失修改2. 不可重復讀不可重復讀是指事務T1讀取數(shù)據(jù)后,事務T2 執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結果。不可重復讀(續(xù))不可重復讀包括三種情況:(1)事務T1讀取某一數(shù)據(jù)后,事務T2對其做了修改,當事務T1再次讀該數(shù)據(jù)時,得到與前一次不同的值 不可重復讀(續(xù))T1讀取B=100進行運算T2讀取同一數(shù)據(jù)B,對其進行修改后將B=200寫回數(shù)據(jù)庫。T1為了對讀取值校對重讀B,B已為200,與第一次讀取值不一致 T1T2 R(A)=50 R(B)=100求和=150R(B)=100BB*2(B)=200 R(A)=50R(B)=200和=250(驗算不對)不可重復讀 例如:不可重復讀(續(xù))
6、(2)事務T1按一定條件從數(shù)據(jù)庫中讀取了某些數(shù)據(jù)記錄后,事務T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄消失了 (3)事務T1按一定條件從數(shù)據(jù)庫中讀取某些數(shù)據(jù)記錄后,事務T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。 后兩種不可重復讀有時也稱為幻影現(xiàn)象(Phantom Row)3. 讀“臟”數(shù)據(jù) 讀“臟”數(shù)據(jù)是指:事務T1修改某一數(shù)據(jù),并將其寫回磁盤事務T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷這時T1已修改過的數(shù)據(jù)恢復原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù) 讀“臟”數(shù)據(jù)(續(xù))T1T2 R(C)=
7、100 CC*2 W(C)=200R(C)=200ROLLBACK C恢復為100例如讀“臟”數(shù)據(jù) T1將C值修改為200,T2讀到C為200T1由于某種原因撤銷,其修改作廢,C恢復原值100這時T2讀到的C為200,與數(shù)據(jù)庫內容不一致,就是“臟”數(shù)據(jù) 并發(fā)控制概述(續(xù))數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務的隔離性并發(fā)控制就是要用正確的方式調度并發(fā)操作,使一個用戶事務的執(zhí)行不受其他事務的干擾,從而避免造成數(shù)據(jù)的不一致性 并發(fā)控制概述(續(xù))并發(fā)控制的主要技術有封鎖(Locking)時間戳(Timestamp)樂觀控制法商用的DBMS一般都采用封鎖方法 第十一章 并發(fā)控制11.1 并發(fā)控制概述11
8、.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結11.2 封鎖什么是封鎖基本封鎖類型鎖的相容矩陣什么是封鎖封鎖就是事務T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務T就對該數(shù)據(jù)對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數(shù)據(jù)對象。基本封鎖類型一個事務對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制由封鎖的類型決定?;痉怄i類型排它鎖(Exclusive Locks,簡記為X鎖)共享鎖(Share Locks,簡記為S鎖)排它鎖排它鎖又稱為寫鎖若事務T對數(shù)據(jù)對象A加上X鎖,則只允許T讀
9、取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖保證其他事務在T釋放A上的鎖之前不能再讀取和修改A 共享鎖共享鎖又稱為讀鎖若事務T對數(shù)據(jù)對象A加上S鎖,則其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖保證其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改 鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求 T1 T2XS-XNNYSNYY-YYY鎖的相容矩陣(續(xù))在鎖的相容矩陣中:最左邊一列表示事務T1已經(jīng)獲得的數(shù)據(jù)對象上的鎖的類型,其中橫線表示沒有加鎖。最上面一行表示另一事務T2對同一數(shù)據(jù)對象發(fā)出的封鎖請求。T2的封鎖請求能否被滿足用矩陣中
10、的Y和N表示Y表示事務T2的封鎖要求與T1已持有的鎖相容,封鎖請求可以滿足N表示T2的封鎖請求與T1已持有的鎖沖突,T2的請求被拒絕使用封鎖機制解決丟失修改問題T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A等待獲得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:事務T1在讀A進行修改之前先對A加X鎖當T2再請求對A加X鎖時被拒絕T2只能等待T1釋放A上的鎖后T2獲得對A的X鎖這時T2讀到的A已經(jīng)是T1更新過的值15T2按此新的A值進行運算,并將結果值A=14送回到磁盤。避免了丟失T1
11、的更新。沒有丟失修改使用封鎖機制解決不可重復讀問題T1T2 Slock ASlock BR(A)=50R(B)=100求和=150Xlock B等待等待 R(A)=50等待R(B)=100等待求和=150等待Commit等待Unlock A等待Unlock B等待獲得XlockBR(B)=100BB*2W(B)=200CommitUnlock B事務T1在讀A,B之前,先對A,B加S鎖其他事務只能再對A,B加S鎖,而不能加X鎖,即其他事務只能讀A,B,而不能修改當T2為修改B而申請對B的X鎖時被拒絕只能等待T1釋放B上的鎖T1為驗算再讀A,B,這時讀出的B仍是100,求和結果仍為150,即可重
12、復讀T1結束才釋放A,B上的S鎖。T2才獲得對B的X鎖 可重復讀使用封鎖機制解決讀“臟”數(shù)據(jù)問題T1T2 Xlock CR(C)=100CC*2W(C)=200Slock C等待 ROLLBACK等待(C恢復為100)等待Unlock C等待獲得Slock CR(C)=100Commit CUnlock C例事務T1在對C進行修改之前,先對C加X鎖,修改其值后寫回磁盤T2請求在C上加S鎖,因T1已在C上加了X鎖,T2只能等待T1因某種原因被撤銷,C恢復為原值100T1釋放C上的X鎖后T2獲得C上的S鎖,讀C=100。避免了T2讀“臟”數(shù)據(jù)不讀“臟”數(shù)據(jù) 第十一章 并發(fā)控制11.1 并發(fā)控制概述
13、11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結11.3 活鎖和死鎖封鎖技術可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖11.3.1 活鎖事務T1封鎖了數(shù)據(jù)R事務T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求T2有可能永遠等待,這就是活鎖的情形 活鎖(續(xù))活 鎖活鎖(續(xù))避免活鎖:采用先來先服務的策略當多個事務請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序對這些事務排隊該數(shù)據(jù)對
14、象上的鎖一旦釋放,首先批準申請隊列中第一個事務獲得鎖11.3.2 死鎖事務T1封鎖了數(shù)據(jù)R1T2封鎖了數(shù)據(jù)R2T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務永遠不能結束,形成死鎖 死鎖(續(xù))T1T2lock R1Lock R2Lock R2.等待等待Lock R1等待等待等待等待死 鎖解決死鎖的方法兩類方法1. 預防死鎖2. 死鎖的診斷與解除1. 死鎖的預防產(chǎn)生死鎖的原因是兩個或多個事務都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務封
15、鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件死鎖的預防(續(xù))預防死鎖的方法 一次封鎖法 順序封鎖法(1)一次封鎖法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行存在的問題降低系統(tǒng)并發(fā)度難于事先精確確定封鎖對象(2)順序封鎖法順序封鎖法是預先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務都按這個順序實行封鎖。順序封鎖法存在的問題維護成本 數(shù)據(jù)庫系統(tǒng)中封鎖的數(shù)據(jù)對象極多,并且在不斷地變化。難以實現(xiàn):很難事先確定每一個事務要封鎖哪些對象 死鎖的預防(續(xù))結論在操作系統(tǒng)中廣為采用的預防死鎖的策略并不很適合數(shù)據(jù)庫的特點DBMS在解決死鎖的問題上更普遍采用的是診斷并解
16、除死鎖的方法2. 死鎖的診斷與解除死鎖的診斷超時法事務等待圖法 (1) 超時法如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)(2)等待圖法用事務等待圖動態(tài)反映所有事務的等待情況事務等待圖是一個有向圖G=(T,U)T為結點的集合,每個結點表示正運行的事務U為邊的集合,每條邊表示事務等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2等待圖法(續(xù))事務等待圖圖(a)中,事務T1等待T2,T2等待T1,產(chǎn)生了死鎖圖(b)中,事務T1等待T2,T2等待T3,T3等待T4,T4又等待T1,產(chǎn)生了死鎖 圖(
17、b)中,事務T3可能還等待T2,在大回路中又有小的回路 等待圖法(續(xù))并發(fā)控制子系統(tǒng)周期性地(比如每隔數(shù)秒)生成事務等待圖,檢測事務。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。死鎖的診斷與解除(續(xù))解除死鎖選擇一個處理死鎖代價最小的事務,將其撤消釋放此事務持有的所有的鎖,使其它事務能繼續(xù)運行下去第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結11.4 并發(fā)調度的可串行性DBMS對并發(fā)事務不同的調度可能會產(chǎn)生不同的結果什么樣的調度是正確的?11.4.1 可串行化調度可串行化(Seria
18、lizable)調度多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結果與按某一次序串行地執(zhí)行這些事務時的結果相同可串行性(Serializability)是并發(fā)事務正確調度的準則一個給定的并發(fā)調度,當且僅當它是可串行化的,才認為是正確調度 可串行化調度(續(xù))例現(xiàn)在有兩個事務,分別包含下列操作:事務T1:讀B;A=B+1;寫回A事務T2:讀A;B=A+1;寫回B現(xiàn)給出對這兩個事務不同的調度策略 串行化調度,正確的調度T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock ASlock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)U
19、nlock B串行調度(a)假設A、B的初值均為2。按T1T2次序執(zhí)行結果為A=3,B=4 串行調度策略,正確的調度 串行化調度,正確的調度T1T2Slock AX=R(A)=2Unlock AXlock BB=X+1=3W(B)Unlock BSlock BY=R(B)=3Unlock BXlock AA=Y+1=4W(A)Unlock A串行調度(b)假設A、B的初值均為2。T2T1次序執(zhí)行結果為B=3,A=4 串行調度策略,正確的調度 不可串行化調度,錯誤的調度T1T2Slock BY=R(B)=2Slock AX=R(A)=2Unlock BUnlock AXlock AA=Y+1=3
20、W(A)Xlock BB=X+1=3W(B)Unlock AUnlock B不可串行化的調度 執(zhí)行結果與(a)、(b)的結果都不同是錯誤的調度 可串行化調度,正確的調度T1T2Slock BY=R(B)=2Unlock BXlock ASlock AA=Y+1=3等待W(A)等待Unlock A等待X=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B可串行化的調度 執(zhí)行結果與串行調度(a)的執(zhí)行結果相同是正確的調度 11.4.2 沖突可串行化調度可串行化調度的充分條件一個調度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務不沖突操作的次序得到另一個調度Sc
21、,如果Sc是串行的,稱調度Sc為沖突可串行化的調度一個調度是沖突可串行化,一定是可串行化的調度沖突可串行化調度(續(xù))沖突操作沖突操作是指不同的事務對同一個數(shù)據(jù)的讀寫操作和寫寫操作Ri (x)與Wj(x) /* 事務Ti讀x,Tj寫x*/Wi(x)與Wj(x) /* 事務Ti寫x,Tj寫x*/其他操作是不沖突操作不同事務的沖突操作和同一事務的兩個操作不能交換(Swap) 沖突可串行化調度(續(xù))例今有調度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2(A)與r1(B)w1(B)交換,得到: r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)
22、r2(B)w2(B)再把r2(A)與r1(B)w1(B)交換: Sc2r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等價于一個串行調度T1,T2,Sc1沖突可串行化的調度沖突可串行化調度(續(xù))沖突可串行化調度是可串行化調度的充分條件,不是必要條件。還有不滿足沖突可串行化條件的可串行化調度。 例有3個事務 T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)調度L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是一個串行調度。調度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不滿足沖突可串行化。但是調度L2是可串行化的
23、,因為L2執(zhí)行的結果與調度L1相同,Y的值都等于T2的值,X的值都等于T3的值 第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結11.5 兩段鎖協(xié)議封鎖協(xié)議 運用封鎖方法時,對數(shù)據(jù)對象加鎖時需要約定一些規(guī)則 何時申請封鎖持鎖時間何時釋放封鎖等兩段封鎖協(xié)議(Two-Phase Locking,簡稱2PL)是最常用的一種封鎖協(xié)議,理論上證明使用兩段封鎖協(xié)議產(chǎn)生的是可串行化調度兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議 指所有事務必須分兩個階段對數(shù)據(jù)項加鎖和解鎖 在對任何數(shù)據(jù)進行讀、寫操作之前,事務首先要獲得
24、對該數(shù)據(jù)的封鎖 在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務分為兩個階段 第一階段是獲得封鎖,也稱為擴展階段事務可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖 第二階段是釋放封鎖,也稱為收縮階段事務可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖 兩段鎖協(xié)議(續(xù))例事務Ti遵守兩段鎖協(xié)議,其封鎖序列是 :Slock A Slock B Xlock C Unlock B Unlock A Unlock C;|擴展階段| 收縮階段 |事務Tj不遵守兩段鎖協(xié)議,其封鎖序列是: Slock A Unlock A Slock B Xlock
25、C Unlock C Unlock B;兩段鎖協(xié)議(續(xù))事務T1事務T2Slock(A)R(A=260)Slock(C)R(C=300)Xlock(A)W(A=160)Xlock( C )W(C=250)Slock(A)Slock(B)等待R(B=1000)等待Xlock(B)等待W(B=1100) 等待Unlock(A)等待R(A=160)Xlock(A)Unlock(B)W(A=210)Unlock( C )遵守兩段鎖協(xié)議的可串行化調度左圖的調度是遵守兩段鎖協(xié)議的,因此一定是一個可串行化調度。兩段鎖協(xié)議(續(xù))事務遵守兩段鎖協(xié)議是可串行化調度的充分條件,而不是必要條件。若并發(fā)事務都遵守兩段鎖
26、協(xié)議,則對這些事務的任何并發(fā)調度策略都是可串行化的若并發(fā)事務的一個調度是可串行化的,不一定所有事務都符合兩段鎖協(xié)議 兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖兩段鎖協(xié)議(續(xù))例 遵守兩段鎖協(xié)議的事務發(fā)生死鎖T1Slock BR(B)=2Xlock A等待等待T2Slock AR(A)=2Xlock A等待遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖 第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2
27、封鎖11.3 活鎖和死鎖11.4 并發(fā)調度的可串行性11.5 兩段鎖協(xié)議11.6 封鎖的粒度11.7 小結封鎖粒度封鎖對象的大小稱為封鎖粒度(Granularity) 封鎖的對象:邏輯單元,物理單元 例:在關系數(shù)據(jù)庫中,封鎖對象:邏輯單元: 屬性值、屬性值集合、元組、關系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等選擇封鎖粒度原則封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關。封鎖的粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小,系統(tǒng)開銷也越小;封鎖的粒度越小,并發(fā)度較高,但系統(tǒng)開銷也就越大選擇封鎖粒度的原則(續(xù))例若封鎖粒度是數(shù)據(jù)頁,事務T1需要修改元
28、組L1,則T1必須對包含L1的整個數(shù)據(jù)頁A加鎖。如果T1對A加鎖后事務T2要修改A中元組L2,則T2被迫等待,直到T1釋放A。如果封鎖粒度是元組,則T1和T2可以同時對L1和L2加鎖,不需要互相等待,提高了系統(tǒng)的并行度。又如,事務T需要讀取整個表,若封鎖粒度是元組,T必須對表中的每一個元組加鎖,開銷極大 選擇封鎖粒度的原則(續(xù))多粒度封鎖(Multiple Granularity Locking) 在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務選擇選擇封鎖粒度 同時考慮封鎖開銷和并發(fā)度兩個因素,適當選擇封鎖粒度需要處理多個關系的大量元組的用戶事務:以數(shù)據(jù)庫為封鎖單位需要處理大量元組的用戶事務:以
29、關系為封鎖單元只處理少量元組的用戶事務:以元組為封鎖單位11.6.1 多粒度封鎖多粒度樹以樹形結構來表示多級封鎖粒度根結點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結點表示最小的數(shù)據(jù)粒度 多粒度封鎖(續(xù))例:三級粒度樹。根結點為數(shù)據(jù)庫,數(shù)據(jù)庫的子結點為關系,關系的子結點為元組。數(shù)據(jù)庫關系Rn關系R1元組元組元組元組 三級粒度樹多粒度封鎖協(xié)議允許多粒度樹中的每個結點被獨立地加鎖對一個結點加鎖意味著這個結點的所有后裔結點也被加以同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖顯式封鎖和隱式封鎖顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖隱式封鎖: 該數(shù)據(jù)對象沒有獨立加鎖,是由于其上級結
30、點加鎖而使該數(shù)據(jù)對象加上了鎖顯式封鎖和隱式封鎖的效果是一樣的顯式封鎖和隱式封鎖(續(xù))系統(tǒng)檢查封鎖沖突時要檢查顯式封鎖還要檢查隱式封鎖例如事務T要對關系R1加X鎖系統(tǒng)必須搜索其上級結點數(shù)據(jù)庫、關系R1還要搜索R1的下級結點,即R1中的每一個元組如果其中某一個數(shù)據(jù)對象已經(jīng)加了不相容鎖,則T必須等待 顯式封鎖和隱式封鎖(續(xù))對某個數(shù)據(jù)對象加鎖,系統(tǒng)要檢查 該數(shù)據(jù)對象有無顯式封鎖與之沖突 所有上級結點檢查本事務的顯式封鎖是否與該數(shù)據(jù)對象上的隱式封鎖沖突:(由上級結點已加的封鎖造成的)所有下級結點看上面的顯式封鎖是否與本事務的隱式封鎖(將加到下級結點的封鎖)沖突11.6.2 意向鎖引進意向鎖(intention lock)目的提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率意向鎖(續(xù))如果對一個結點加意向鎖,則說明該結點的下層結點正在被加鎖對任一結點加基本鎖,必須先對它的上層結點加意向鎖例如,對任一元組加鎖時,必須先對它所在的數(shù)據(jù)庫和關系加意向鎖 常用意向鎖意向共享鎖(Intent Share Lock,簡稱IS鎖)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 惠州2025年廣東惠州龍門縣地派鎮(zhèn)人民政府招聘編外人員筆試歷年參考題庫附帶答案詳解
- 廣安2025年四川廣安部分市直屬事業(yè)單位考調18人筆試歷年參考題庫附帶答案詳解
- 宜賓2025年四川宜賓市翠屏區(qū)婦幼保健院招聘員額制人員56人筆試歷年參考題庫附帶答案詳解
- 大理2025年云南大理劍川縣教育體育系統(tǒng)教師縣內考調24人筆試歷年參考題庫附帶答案詳解
- 職業(yè)人群慢性病預防的社區(qū)動員策略
- 中山2025年廣東中山沙溪鎮(zhèn)合同制工作人員招聘5人(第一期)筆試歷年參考題庫附帶答案詳解
- 企業(yè)消防制度管理制度
- 企業(yè)巡查檢查制度
- 耐藥腫瘤的免疫原性死亡誘導策略
- 耐藥菌傳播網(wǎng)絡的動態(tài)干預策略
- 心肌梗死護理教學課件
- 護患沖突與溝通管理要點
- 畢業(yè)論文寫作與答辯(第三版)課件 專題一 破冰起航
- 2025年市場監(jiān)督管理局招聘面試題及答案
- 社區(qū)調解案例講解
- 中藥離子導入治療技術
- T-CEMA 027-2025 自血穴位注射療法技術操作規(guī)范
- 股東合作協(xié)議出資協(xié)議書
- (高清版)DB31∕T 1578-2025 微型消防站建設與運行要求
- DB42T 1279-2017 機動車檢驗檢測機構資質認定評審通 用指南
- 應急測繪服務方案(3篇)
評論
0/150
提交評論