




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第十一章 并發(fā)(bngf)控制共一百頁第八章 并發(fā)(bngf)控制8.1 并發(fā)控制概述8.2 封鎖8.3 封鎖協(xié)議8.4 活鎖和死鎖8.5 并發(fā)調(diào)度(diod)的可串行性8.6 兩段鎖協(xié)議8.7 封鎖的粒度8.8 小結(jié)共一百頁多事務執(zhí)行方式 (1)事務串行執(zhí)行每個時刻只有一個事務運行,其他事務必須(bx)等到這個事務結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點共一百頁(2)交叉并發(fā)方式(interleaved concurrency)事務的并行執(zhí)行是這些(zhxi)并行事務的并行操作輪流交叉運行是單處理機系統(tǒng)中的并發(fā)方式,能夠減少處理機的空閑時間,提高系統(tǒng)的效率共一百頁(3)
2、同時并發(fā)方式(simultaneous concurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務,多個處理機可以同時運行多個事務,實現(xiàn)多個事務真正的并行運行最理想的并發(fā)方式,但受制于硬件環(huán)境更復雜(fz)的并發(fā)方式機制共一百頁事務并發(fā)執(zhí)行(zhxng)帶來的問題可能會存取和存儲不正確的數(shù)據(jù),破壞事務(shw)的隔離性和數(shù)據(jù)庫的一致性DBMS必須提供并發(fā)控制機制并發(fā)控制機制是衡量一個DBMS性能的重要標志之一共一百頁11.1 并發(fā)控制(kngzh)概述并發(fā)控制機制的任務對并發(fā)操作進行正確(zhngqu)調(diào)度保證事務的隔離性保證數(shù)據(jù)庫的一致性共一百頁并發(fā)操作(cozu)帶來的數(shù)據(jù)不一致性
3、丟失修改(lost update)不可重復(chngf)讀(non-repeatable read)讀“臟”數(shù)據(jù)(dirty read)共一百頁圖11.2 三種(sn zhn)數(shù)據(jù)不一致性 T1T2 讀A=16 AA-1 寫回A=15讀A=16AA-1寫回A=15(a) 丟失(dis)修改共一百頁1. 丟失(dis)修改丟失修改是指事務1與事務2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改事務2的提交結(jié)果(ji gu)破壞了事務1提交的結(jié)果(ji gu),導致事務1的修改被丟失。共一百頁圖11.2 三種(sn zhn)數(shù)據(jù)不一致性(續(xù)) 讀B=100 BB*2寫回B=200 讀A=50 讀B=100 求和=1
4、50 讀A=50 讀B=200 求和=250 (驗算不對) T2T1(b) 不可(bk)重復讀共一百頁2. 不可(bk)重復讀不可(bk)重復讀是指事務1讀取數(shù)據(jù)后,事務2執(zhí)行更新操作,使事務1無法再現(xiàn)前一次讀取結(jié)果。共一百頁三類(sn li)不可重復讀事務1讀取某一數(shù)據(jù)后:1、事務2對其做了修改,當事務1再次讀該數(shù)據(jù)時,得到與前一次不同的值。2 、事務2刪除了其中部分記錄,當事務1再次讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神密(shn m)地消失了。3 、事務2插入了一些記錄,當事務1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。后兩種不可重復讀有時也稱為幻影現(xiàn)象(phantom row)共一百頁圖11.2
5、 三種(sn zhn)數(shù)據(jù)不一致性(續(xù))讀C=200 讀C=100 CC*2 寫回C ROLLBACK C恢復為100T2T1(c) 讀“臟”數(shù)據(jù)(shj)共一百頁3. 讀“臟”數(shù)據(jù)(shj)事務1修改某一數(shù)據(jù),并將其寫回磁盤(c pn)事務2讀取同一數(shù)據(jù)后事務1由于某種原因被撤消,這時事務1已修改過的數(shù)據(jù)恢復原值事務2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,是不正確的數(shù)據(jù),又稱為“臟”數(shù)據(jù)。共一百頁11.2 封鎖(fn su)一、什么(shn me)是封鎖二、基本封鎖類型三、基本鎖的相容矩陣共一百頁一、什么(shn me)是封鎖封鎖就是事務T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)
6、出請求,對其加鎖加鎖后事務T就對該數(shù)據(jù)對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常(fichng)重要的技術共一百頁二、基本封鎖(fn su)類型DBMS通常提供了多種類型(lixng)的封鎖。一個事務對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制是由封鎖的類型(lixng)決定的。基本封鎖類型排它鎖(eXclusive lock,簡記為X鎖)共享鎖(Share lock,簡記為S鎖)共一百頁排它鎖排它鎖又稱為寫鎖若事務T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型(lixng)的鎖,直到T釋放A上的鎖共一
7、百頁共享鎖共享鎖又稱為(chn wi)讀鎖若事務T對數(shù)據(jù)對象A加上S鎖,則其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖共一百頁三、鎖的相容(xin rn)矩陣Y=Yes,相容的請求N=No,不相容的請求 T1 T2XS-XNNYSNYY-YYY共一百頁在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些(yxi)規(guī)則:封鎖協(xié)議(Locking Protocol) 何時申請X鎖或S鎖持鎖時間、何時釋放 不同的封鎖協(xié)議,在不同的程度上為并發(fā)操 作的正確調(diào)度提供一定的保證常用的封鎖協(xié)議:三級封鎖協(xié)議共一百頁1級封鎖(fn su)協(xié)議事務T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務結(jié)束才釋放
8、正常結(jié)束(COMMIT)非正常結(jié)束(ROLLBACK)1級封鎖協(xié)議可防止丟失(dis)修改在1級封鎖協(xié)議中,如果是讀數(shù)據(jù),不需要加鎖的,所以它不能保證可重復讀和不讀“臟”數(shù)據(jù)。共一百頁1級封鎖(fn su)協(xié)議T1T2 Xlock A 獲得 讀A=16AA-1 寫回A=15 Commit Unlock AXlock A等待等待等待等待獲得Xlock A讀A=15AA-1寫回A=14CommitUnlock A沒有丟失(dis)修改 共一百頁1級封鎖(fn su)協(xié)議讀A=15 Xlock A 獲得 讀A=16 AA-1 寫回A=15 RollbackUnlock AT2T1讀“臟”數(shù)據(jù)(shj
9、)共一百頁1級封鎖(fn su)協(xié)議 Xlock B 獲得 讀B=100 BB*2 寫回B=200 Commit Unlock B讀A=50 讀B=100 求和=150讀A=50 讀B=200 求和=250 (驗算不對) T2T1不可(bk)重復讀共一百頁 2級封鎖(fn su)協(xié)議1級封鎖協(xié)議+事務T在讀取數(shù)據(jù)R前必須先加S鎖,讀完后即可釋放(shfng)S鎖2級封鎖協(xié)議可以防止丟失修改和讀“臟”數(shù)據(jù)。在2級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復讀。共一百頁2級封鎖(fn su)協(xié)議不可(bk)重復讀Sclock A 獲得 讀A=50 Unlock A Sclock B
10、 獲得 讀B=100 Unlock B 求和=150 Xlock B等待等待獲得Xlock B讀B=100BB*2寫回B=200CommitUnlock BT2T1Sclock A 獲得 讀A=50 Unlock A Sclock B 獲得 讀B=200 Unlock B 求和=250 (驗算不對) T2T1 (續(xù))共一百頁 3級封鎖(fn su)協(xié)議1級封鎖協(xié)議 + 事務T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務結(jié)束(jish)才釋放3級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復讀。共一百頁3級封鎖(fn su)協(xié)議T1T2 Slock A 讀A=50 Slock B 讀B=100 求和=
11、150 讀A=50 讀B=100 求和=150 Commit Unlock A Unlock B Xlock B等待等待等待 等待等待等待等待等待獲得Xlock B讀B=100BB*2寫回B=200CommitUnlock B 可重復(chngf)讀 共一百頁3級封鎖(fn su)協(xié)議T1T2 Xlock C 讀C= 100 CC*2 寫回C=200 ROLLBACK (C恢復為100) Unlock C Slock C等待等待等待等待獲得Slock C讀C=100Commit CUnlock C不讀“臟”數(shù)據(jù)(shj) 共一百頁封鎖(fn su)協(xié)議小結(jié)三級協(xié)議的主要區(qū)別(qbi)什么操作需
12、要申請封鎖何時釋放鎖(即持鎖時間)共一百頁封鎖協(xié)議(xiy)小結(jié)(續(xù))共一百頁11.3 活鎖和死鎖封鎖技術可以有效地解決(jiju)并行操作的一致性問題,但也帶來一些新的問題死鎖活鎖共一百頁1 活鎖共一百頁如何(rh)避免活鎖采用先來先服務的策略:當多個事務請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序?qū)@些事務排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請(shnqng)隊列中第一個事務獲得鎖。共一百頁2 死鎖T1 T2 Xlock R1.Xlock R2等待(dngdi)等待等待.Xlock R2.Xlock R1等待(dngdi)等待.共一百頁解決(jiju)死鎖的方法兩類方法1. 預防死鎖2.
13、 死鎖的診斷(zhndun)與解除共一百頁 死鎖的預防(yfng)產(chǎn)生死鎖的原因是兩個或多個(du )事務都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件共一百頁死鎖的預防(yfng)(續(xù))預防死鎖的方法(fngf) 一次封鎖法 順序封鎖法共一百頁(1)一次封鎖(fn su)法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行一次封鎖法存在的問題:降低并發(fā)(bngf)度 擴大封鎖范圍將以后要用到的全部數(shù)據(jù)加鎖,勢必擴大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度共一百頁一次封鎖(fn su)法(續(xù))難于事先精確
14、確定(qudng)封鎖對象數(shù)據(jù)庫中數(shù)據(jù)是不斷變化的,原來不要求封鎖的數(shù)據(jù),在執(zhí)行過程中可能會變成封鎖對象,所以很難事先精確地確定每個事務所要封鎖的數(shù)據(jù)對象解決方法:將事務在執(zhí)行過程中可能要封鎖的數(shù)據(jù)對象全部加鎖,這就進一步降低了并發(fā)度。共一百頁(2)順序(shnx)封鎖法順序封鎖法是預先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務都按這個順序?qū)嵭蟹怄i。順序封鎖法存在的問題(wnt) 維護成本高數(shù)據(jù)庫系統(tǒng)中可封鎖的數(shù)據(jù)對象極其眾多,并且隨數(shù)據(jù)的插入、刪除等操作而不斷地變化,要維護這樣極多而且變化的資源的封鎖順序非常困難,成本很高共一百頁順序(shnx)封鎖法(續(xù))難于實現(xiàn)事務的封鎖請求可以隨著事務的執(zhí)行
15、而動態(tài)地決定,很難事先確定(qudng)每一個事務要封鎖哪些對象,因此也就很難按規(guī)定的順序去施加封鎖。 例:規(guī)定數(shù)據(jù)對象的封鎖順序為A,B,C,D,E。事務T3起初要求封鎖數(shù)據(jù)對象B,C,E,但當它封鎖了B,C后,才發(fā)現(xiàn)還需要封鎖A,這樣就破壞了封鎖順序.共一百頁死鎖的預防(yfng)(續(xù))結(jié)論在操作系統(tǒng)中廣為采用的預防(yfng)死鎖的策略并不很適合數(shù)據(jù)庫的特點DBMS在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法共一百頁死鎖的診斷(zhndun)與解除允許死鎖發(fā)生解除死鎖由DBMS的并發(fā)控制子系統(tǒng)定期檢測系統(tǒng)中是否存在死鎖一旦(ydn)檢測到死鎖,就要設法解除共一百頁檢測(jin c
16、)死鎖:超時法如果一個事務(shw)的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)共一百頁等待(dngdi)圖法用事務等待圖動態(tài)反映所有(suyu)事務的等待情況事務等待圖是一個有向圖G=(T,U)T為結(jié)點的集合,每個結(jié)點表示正運行的事務U為邊的集合,每條邊表示事務等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2并發(fā)控制子系統(tǒng)周期性地(比如每隔1 min)檢測事務等待圖,如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。共一百頁死鎖的診斷(zhndun)與解除(續(xù))解除死鎖選擇一個(y )處理死鎖代價最小的
17、事務,將其撤消,釋放此事務持有的所有的鎖,使其它事務能繼續(xù)運行下去。共一百頁11.4 并發(fā)(bngf)調(diào)度的可串行性一、什么樣的并發(fā)操作(cozu)調(diào)度是正確的二、如何保證并發(fā)操作的調(diào)度是正確的共一百頁11.4 并發(fā)(bngf)調(diào)度的可串行性一、什么樣的并發(fā)操作調(diào)度是正確的二、如何(rh)保證并發(fā)操作的調(diào)度是正確的共一百頁一、什么樣的并發(fā)操作(cozu)調(diào)度是正確的計算機系統(tǒng)對并行事務中并行操作的調(diào)度是的隨機的,而不同的調(diào)度可能會產(chǎn)生不同的結(jié)果。將所有(suyu)事務串行起來的調(diào)度策略一定是正確的調(diào)度策略。如果一個事務運行過程中沒有其他事務在同時運行,也就是說它沒有受到其他事務的干擾,那么就可
18、以認為該事務的運行結(jié)果是正常的或者預想的共一百頁什么樣的并發(fā)操作(cozu)調(diào)度是正確的(續(xù))以不同的順序串行執(zhí)行事務也有可能會產(chǎn)生不同的結(jié)果,但由于不會將數(shù)據(jù)庫置于不一致狀態(tài),所以都可以認為是正確的。 幾個事務的并行執(zhí)行是正確的,當且僅當其結(jié)果與按某一次序串行地執(zhí)行它們(t men)時的結(jié)果相同。這種并行調(diào)度策略稱為可串行化(Serializable)的調(diào)度。共一百頁什么樣的并發(fā)(bngf)操作調(diào)度是正確的(續(xù))可串行性是并行(bngxng)事務正確性的唯一準則例:現(xiàn)在有兩個事務,分別包含下列操作: 事務1:讀B;A=B+1;寫回A; 事務2:讀A;B=A+1;寫回B; 假設A的初值為2,B
19、的初值為2。共一百頁什么樣的并發(fā)(bngf)操作調(diào)度是正確的(續(xù))對這兩個事務的不同調(diào)度策略串行執(zhí)行(zhxng)串行調(diào)度策略1串行調(diào)度策略2交錯執(zhí)行不可串行化的調(diào)度可串行化的調(diào)度共一百頁(a) 串行調(diào)度策略(cl),正確的調(diào)度Slock BY=B=2Unlock BXlock AA=Y+1寫回A(=3)Unlock A Slock AX=A=3Unlock AXlock BB=X+1寫回B(=4)Unlock B T1T2共一百頁(b) 串行調(diào)度策略(cl),正確的調(diào)度 Slock BY=B=3Unlock BXlock AA=Y+1寫回A(=4)Unlock A SlockA X=A=2U
20、nlock AXlock BB=X+1寫回B(=3)Unlock BT1T2共一百頁(c) 不可(bk)串行化的調(diào)度Slock BY=B=2Unlock BXlock AA=Y+1寫回A(=3)Unlock A Slock AX=A=2Unlock AXlock BB=X+1寫回B(=3)Unlock B T1T2共一百頁(c) 不可(bk)串行化的調(diào)度(續(xù))由于其執(zhí)行結(jié)果與(a)、(b)的結(jié)果都不同,所以是錯誤(cuw)的調(diào)度。共一百頁(d) 可串行化的調(diào)度(diod)Slock BY=B=2Unlock BXlock AA=Y+1寫回A(=3)Unlock ASlock A 等待(dngd
21、i) 等待 等待X=A=3Unlock AXlock BB=X+1寫回B(=4)Unlock B T1T2共一百頁(d) 可串行化的調(diào)度(diod)(續(xù))由于(yuy)其執(zhí)行結(jié)果與串行調(diào)度(a)的執(zhí)行結(jié)果相同,所以是正確的調(diào)度。共一百頁11.4 并發(fā)(bngf)調(diào)度的可串行性一、什么樣的并發(fā)操作(cozu)調(diào)度是正確的二、如何保證并發(fā)操作的調(diào)度是正確的共一百頁二、如何保證并發(fā)操作(cozu)的調(diào)度是正確的為了保證并行操作的正確性,DBMS的并行控制機制必須提供一定的手段來保證調(diào)度(diod)是可串行化的。從理論上講,在某一事務執(zhí)行時禁止其他事務執(zhí)行的調(diào)度策略一定是可串行化的調(diào)度,這也是最簡單的
22、調(diào)度策略,但這種方法實際上是不可行的,因為它使用戶不能充分共享數(shù)據(jù)庫資源。共一百頁如何保證并發(fā)(bngf)操作的調(diào)度是正確的(續(xù))保證并發(fā)操作調(diào)度正確性的方法(fngf)封鎖方法:兩段鎖(Two-Phase Locking,簡稱2PL)協(xié)議時標方法樂觀方法共一百頁11.5 兩段鎖協(xié)議(xiy)兩段鎖協(xié)議的內(nèi)容1. 在對任何數(shù)據(jù)(shj)進行讀、寫操作之前,事務首先要獲得對該數(shù)據(jù)(shj)的封鎖2. 在釋放一個封鎖之后,事務不再獲得任何其他封鎖。共一百頁兩段鎖協(xié)議(xiy)(續(xù))“兩段”鎖的含義事務分為兩個階段 第一階段是獲得封鎖,也稱為擴展階段; 第二階段是釋放(shfng)封鎖,也稱為收縮階
23、段。共一百頁兩段鎖協(xié)議(xiy)(續(xù))例:事務1的封鎖(fn su)序列:Slock A . Slock B . Xlock C . Unlock B . Unlock A . Unlock C;事務2的封鎖序列:Slock A . Unlock A . Slock B . Xlock C . Unlock C . Unlock B;事務1遵守兩段鎖協(xié)議,而事務2不遵守兩段協(xié)議。共一百頁兩段鎖協(xié)議(xiy)(續(xù))并行執(zhí)行的所有事務均遵守兩段鎖協(xié)議,則對這些事務的所有并行調(diào)度策略都是可串行化的。所有遵守兩段鎖協(xié)議的事務,其并行執(zhí)行的結(jié)果一定是正確(zhngqu)的事務遵守兩段鎖協(xié)議是可串行化調(diào)度
24、的充分條件,而不是必要條件可串行化的調(diào)度中,不一定所有事務都必須符合兩段鎖協(xié)議。共一百頁兩段鎖協(xié)議(xiy)(續(xù))T1Slock B讀B=2Y=BXlock AA=Y+1寫回A=3Unlock BUnlock AT2Slock A 等待(dngdi) 等待 等待 等待 等待Slock A讀A=3Y=A Xlock BB=Y+1寫回B=4Unlock BUnlock AT1Slock B讀B=2Y=BUnlock BXlock AA=Y+1寫回A=3Unlock AT2Slock A等待等待等待等待Slock A讀A=3X=AUnlock AXlock BB=X+1寫回B=4Unlock B (
25、a) 遵守兩段鎖協(xié)議 (b) 不遵守兩段鎖協(xié)議 T1Slock B讀B=2Y=BUnlock BXlock AA=Y+1寫回A=3Unlock AT2Slock A讀A=2X=AUnlock AXlock B等待Xlock BB=X+1寫回B=3Unlock B(c) 不遵守兩段鎖協(xié)議 共一百頁兩段鎖協(xié)議(xiy)(續(xù))兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務必須(bx)一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖共一百頁兩段鎖協(xié)議(xiy)(續(xù))
26、遵守兩段鎖協(xié)議的事務(shw)發(fā)生死鎖T1Slock B讀B=2Xlock A等待等待T2Slock A讀A=2Xlock A等待共一百頁兩段鎖協(xié)議(xiy)(續(xù))兩段鎖協(xié)議與三級封鎖協(xié)議兩類不同目的(md)的協(xié)議兩段鎖協(xié)議保證并發(fā)調(diào)度的正確性三級封鎖協(xié)議在不同程度上保證數(shù)據(jù)一致性遵守第三級封鎖協(xié)議必然遵守兩段協(xié)議共一百頁11.6 封鎖(fn su)的粒度1 封鎖(fn su)粒度2 多粒度封鎖3 意向鎖共一百頁1 封鎖(fn su)粒度一、什么是封鎖粒度(l d)二、選擇封鎖粒度的原則共一百頁一、什么(shn me)是封鎖粒度X鎖和S鎖都是加在某一個數(shù)據(jù)對象上的封鎖的對象:邏輯單元,物理單元
27、 例:在關系數(shù)據(jù)庫中,封鎖對象:邏輯單元: 屬性(shxng)值、屬性(shxng)值集合、元組、關系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等共一百頁什么是封鎖(fn su)粒度(續(xù))封鎖對象可以很大也可以很小 例: 對整個數(shù)據(jù)庫加鎖 對某個(mu )屬性值加鎖封鎖對象的大小稱為封鎖的粒度(Granularity)多粒度封鎖(multiple granularity locking)在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務選擇共一百頁1 封鎖(fn su)粒度一、什么是封鎖(fn su)粒度二、選擇封鎖粒度的原則共一百頁二、選擇(xunz)封鎖粒度的原則封
28、鎖的粒度(l d)越 大,小,系統(tǒng)被封鎖的對象 少,多,并發(fā)度 小,高,系統(tǒng)開銷 小,大,選擇封鎖粒度:考慮封鎖機構和并發(fā)度兩個因素對系統(tǒng)開銷與并發(fā)度進行權衡共一百頁選擇封鎖(fn su)粒度的原則(續(xù))需要處理多個關系的大量元組的用戶事務:以數(shù)據(jù)庫為封鎖單位;需要處理大量元組的用戶事務:以關系為封鎖單元(dnyun);只處理少量元組的用戶事務:以元組為封鎖單位共一百頁2 多粒度(l d)封鎖多粒度樹以樹形結(jié)構來表示多級封鎖(fn su)粒度根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結(jié)點表示最小的數(shù)據(jù)粒度 共一百頁多粒度(l d)封鎖(續(xù))例:三級粒度樹。根結(jié)點(ji din)為數(shù)據(jù)庫,數(shù)據(jù)庫的
29、子結(jié)點(ji din)為關系,關系的子結(jié)點(ji din)為元組。數(shù)據(jù)庫關系Rn關系R1元組元組元組元組共一百頁多粒度封鎖(fn su)協(xié)議 允許多粒度樹中的每個結(jié)點被獨立地加鎖對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以(jiy)同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖共一百頁顯式封鎖(fn su)和隱式封鎖(fn su)顯式封鎖(fn su): 直接加到數(shù)據(jù)對象上的封鎖(fn su)隱式封鎖: 由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖顯式封鎖和隱式封鎖的效果是一樣的共一百頁對某個數(shù)據(jù)對象加鎖時系統(tǒng)(xtng)檢查的內(nèi)容 該數(shù)據(jù)對象有無顯式封鎖與之沖
30、突(chngt) 所有上級結(jié)點檢查本事務的顯式封鎖是否與該數(shù)據(jù)對象上的隱式封鎖沖突:(由上級結(jié)點封鎖造成的)所有下級結(jié)點看上面的顯式封鎖是否與本事務的隱式封鎖(將加到下級結(jié)點的封鎖)沖突。共一百頁3 意向鎖引進意向鎖(intention lock)目的提高(t go)對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率共一百頁什么(shn me)是意向鎖對任一結(jié)點加基本鎖,必須先對它的上層(shngcng)結(jié)點加意向鎖如果對一個結(jié)點加意向鎖,則說明該結(jié)點的下層結(jié)點正在被加鎖共一百頁意向鎖(續(xù))例:對任一元組 r 加鎖,先關系R加意向鎖 事務(shw)T要對關系R加X鎖, 系統(tǒng)只要檢查根結(jié)點數(shù)據(jù)庫和關系R是否已加
31、了不相容的鎖,不需要搜索和檢查R中的每一個元組是否加了X鎖共一百頁常用(chn yn)意向鎖意向(yxing)共享鎖(Intent Share Lock,簡稱IS鎖)意向排它鎖(Intent Exclusive Lock,簡稱IX鎖)共享意向排它鎖(Share Intent Exclusive Lock,簡稱SIX鎖)共一百頁意向鎖(續(xù))IS鎖如果對一個數(shù)據(jù)(shj)對象加IS鎖,表示它的后裔結(jié)點擬(意向)加S鎖。例:要對某個元組加S鎖,則要首先對關系和數(shù)據(jù)庫加IS鎖共一百頁意向鎖(續(xù))IX鎖如果對一個數(shù)據(jù)對象加IX鎖,表示(biosh)它的后裔結(jié)點擬(意向)加X鎖。 例:要對某個元組加X鎖,則要首先對關系和數(shù)據(jù)庫加IX鎖。共一百頁意向鎖(續(xù))SIX鎖如果對一個(y )數(shù)據(jù)對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。 例:對某個表加SIX鎖,則表示該事務要讀整個表(所以要對該表加S鎖),同時會更新個別元組(所以要對該表加IX鎖)。共一百頁意向鎖(續(xù))意向鎖的相容(xin rn)矩陣 T1 T2 S X IS IX SIX - S Y N Y N N Y X N N N N N Y IS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 評價隋唐地方管理制度
- 訴訟檔案借閱管理制度
- 診所消毒隔離管理制度
- 試乘試駕基地管理制度
- 財政單據(jù)核銷管理制度
- 貨物入庫餐飲管理制度
- 貨物進出單據(jù)管理制度
- 貨車司機行為管理制度
- 過橋貸款協(xié)議書范本
- 水廠投資合同協(xié)議書范本
- 藥店醫(yī)保知識培訓課件
- 藝術團體演員聘用合同模板
- 光伏知識及產(chǎn)品培訓課件
- 自來水管線更新工程 投標方案(技術方案)
- 《中暑的預防與急救》課件
- 2025年中國建筑西南勘察設計研究院有限公司招聘筆試題庫含答案解析
- 2025年兗礦集團招聘筆試參考題庫含答案解析
- 地下車庫防水工程施工方案
- 水閘課程設計底板配筋
- 自然科學研究方法論
- 心理干預在罪錯未成年人司法保護中的實施路徑
評論
0/150
提交評論