版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第十一章 并發(fā)控制 并發(fā)控制多用戶數(shù)據(jù)庫系統(tǒng) 允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)飛機定票數(shù)據(jù)庫系統(tǒng)銀行數(shù)據(jù)庫系統(tǒng) 特點:在同一時刻并發(fā)運行的事務(wù)數(shù)可達數(shù)百上千個 并發(fā)控制(續(xù))多事務(wù)執(zhí)行方式 (1)事務(wù)串行執(zhí)行每個時刻只有一個事務(wù)運行,其他事務(wù)必須等到這個事務(wù)結(jié)束以后方能運行不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點T1T2T3事務(wù)的串行執(zhí)行方式并發(fā)控制(續(xù))在單處理機系統(tǒng)中,事務(wù)的并行執(zhí)行是這些并行事務(wù)的并行操作輪流交叉運行單處理機系統(tǒng)中的并行事務(wù)并沒有真正地并行運行,但能夠減少處理機的空閑時間,提高系統(tǒng)的效
2、率(2)交叉并發(fā)方式(Interleaved Concurrency)并發(fā)控制(續(xù)) (3)同時并發(fā)方式(simultaneous concurrency)多處理機系統(tǒng)中,每個處理機可以運行一個事務(wù),多個處理機可以同時運行多個事務(wù),實現(xiàn)多個事務(wù)真正的并行運行最理想的并發(fā)方式,但受制于硬件環(huán)境更復(fù)雜的并發(fā)方式機制本章討論的數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)是以單處理機系統(tǒng)為基礎(chǔ)的 并發(fā)控制(續(xù))事務(wù)并發(fā)執(zhí)行帶來的問題會產(chǎn)生多個事務(wù)同時存取同一數(shù)據(jù)的情況 可能會存取和存儲不正確的數(shù)據(jù),破壞事務(wù)隔離性和數(shù)據(jù)庫的一致性數(shù)據(jù)庫管理系統(tǒng)必須提供并發(fā)控制機制并發(fā)控制機制是衡量一個數(shù)據(jù)庫管理系統(tǒng)性能的重要標志之一第十一章
3、 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.1 并發(fā)控制概述事務(wù)是并發(fā)控制的基本單位并發(fā)控制機制的任務(wù)對并發(fā)操作進行正確調(diào)度保證事務(wù)的隔離性保證數(shù)據(jù)庫的一致性T1的修改被T2覆蓋了!并發(fā)控制概述(續(xù))并發(fā)操作帶來數(shù)據(jù)的不一致性實例例11.1飛機訂票系統(tǒng)中的一個活動序列 甲售票點(事務(wù)T1)讀出某航班的機票余額A,設(shè)A=16; 乙售票點(事務(wù)T2)讀出同一航班的機票余額A,也為16; 甲售票點賣出一張機票,修改余額AA-1,所以A為15,把A
4、寫回數(shù)據(jù)庫; 乙售票點也賣出一張機票,修改余額AA-1,所以A為15,把A寫回數(shù)據(jù)庫 結(jié)果明明賣出兩張機票,數(shù)據(jù)庫中機票余額只減少1 并發(fā)控制概述(續(xù))這種情況稱為數(shù)據(jù)庫的不一致性,是由并發(fā)操作引起的。在并發(fā)操作情況下,對T1、T2兩個事務(wù)的操作序列的調(diào)度是隨機的。若按上面的調(diào)度序列執(zhí)行,T1事務(wù)的修改就被丟失。原因:第4步中T2事務(wù)修改A并寫回后覆蓋了T1事務(wù)的修改并發(fā)控制概述(續(xù))并發(fā)操作帶來的數(shù)據(jù)不一致性1.丟失修改(Lost Update)2.不可重復(fù)讀(Non-repeatable Read)3.讀“臟”數(shù)據(jù)(Dirty Read)記號R(x):讀數(shù)據(jù)xW(x):寫數(shù)據(jù)x 1. 丟失
5、修改兩個事務(wù)T1和T2讀入同一數(shù)據(jù)并修改,T2的提交結(jié)果破壞了T1提交的結(jié)果,導(dǎo)致T1的修改被丟失。上面飛機訂票例子就屬此類 丟失修改(續(xù))T1T2 R(A)=16 R(A)=16 AA-1 W(A)=15 AA-1 W(A)=15丟失修改2. 不可重復(fù)讀不可重復(fù)讀是指事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2 執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。不可重復(fù)讀(續(xù))不可重復(fù)讀包括三種情況:(1)事務(wù)T1讀取某一數(shù)據(jù)后,事務(wù)T2對其做了修改,當事務(wù)T1再次讀該數(shù)據(jù)時,得到與前一次不同的值 不可重復(fù)讀(續(xù))T1讀取B=100進行運算T2讀取同一數(shù)據(jù)B,對其進行修改后將B=200寫回數(shù)據(jù)庫。T1為了對讀取值
6、校對重讀B,B已為200,與第一次讀取值不一致 T1T2 R(A)=50 R(B)=100 求和=150R(B)=100BB*2W(B)=200 R(A)=50 R(B)=200 求和=250 (驗算不對)不可重復(fù)讀 例如:不可重復(fù)讀(續(xù))(2)事務(wù)T1按一定條件從數(shù)據(jù)庫中讀取了某些數(shù)據(jù)記錄后,事務(wù)T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神秘地消失了。 (3)事務(wù)T1按一定條件從數(shù)據(jù)庫中讀取某些數(shù)據(jù)記錄后,事務(wù)T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。 后兩種不可重復(fù)讀有時也稱為幻影現(xiàn)象(Phantom Row)3. 讀“臟”數(shù)據(jù) 讀“臟
7、”數(shù)據(jù)是指:事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷這時T1已修改過的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù) 讀“臟”數(shù)據(jù)(續(xù))T1T2 R(C)=100 CC*2W(C)=200R(C)=200 ROLLBACK C恢復(fù)為100例如讀“臟”數(shù)據(jù) T1將C值修改為200,T2讀到C為200T1由于某種原因撤銷,其修改作廢,C恢復(fù)原值100這時T2讀到的C為200,與數(shù)據(jù)庫內(nèi)容不一致,就是“臟”數(shù)據(jù) 并發(fā)控制概述(續(xù))數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務(wù)的隔離性并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操
8、作,使一個用戶事務(wù)的執(zhí)行不受其他事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性 對數(shù)據(jù)庫的應(yīng)用有時允許某些不一致性,例如有些統(tǒng)計工作涉及數(shù)據(jù)量很大,讀到一些“臟”數(shù)據(jù)對統(tǒng)計精度沒什么影響,可以降低對一致性的要求以減少系統(tǒng)開銷 參見愛課程網(wǎng)11.1節(jié)動畫并發(fā)操作帶來的數(shù)據(jù)不一致性并發(fā)控制概述(續(xù))并發(fā)控制的主要技術(shù)封鎖(Locking)時間戳(Timestamp)樂觀控制法多版本并發(fā)控制(MVCC)第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.
9、2 封鎖什么是封鎖基本封鎖類型鎖的相容矩陣什么是封鎖封鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)基本封鎖類型一個事務(wù)對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制由封鎖的類型決定。基本封鎖類型排它鎖(Exclusive Locks,簡記為X鎖)共享鎖(Share Locks,簡記為S鎖)排它鎖排它鎖又稱為寫鎖若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖保證其他事
10、務(wù)在T釋放A上的鎖之前不能再讀取和修改A 共享鎖共享鎖又稱為讀鎖若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖保證其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改 鎖的相容矩陣Y=Yes,相容的請求N=No,不相容的請求T1XS_XNNYSNYY_YYYT2鎖的相容矩陣(續(xù))在鎖的相容矩陣中:最左邊一列表示事務(wù)T1已經(jīng)獲得的數(shù)據(jù)對象上的鎖的類型,其中橫線表示沒有加鎖。最上面一行表示另一事務(wù)T2對同一數(shù)據(jù)對象發(fā)出的封鎖請求。T2的封鎖請求能否被滿足用矩陣中的Y和N表示Y表示事務(wù)T2的封鎖要求與T1已持有的鎖相容
11、,封鎖請求可以滿足N表示T2的封鎖請求與T1已持有的鎖沖突,T2的請求被拒絕第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.3 封鎖協(xié)議什么是封鎖協(xié)議在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些規(guī)則,這些規(guī)則為封鎖協(xié)議(Locking Protocol)。 何時申請X鎖或S鎖持鎖時間何時釋放對封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議,它們分別在不同的程度上為并發(fā)操作的正確調(diào)度提供一定的保證。保持數(shù)據(jù)一致性的常用封鎖協(xié)議三級封
12、鎖協(xié)議1.一級封鎖協(xié)議2.二級封鎖協(xié)議3.三級封鎖協(xié)議1. 一級封鎖協(xié)議一級封鎖協(xié)議事務(wù)T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務(wù)結(jié)束才釋放。正常結(jié)束(COMMIT)非正常結(jié)束(ROLLBACK)一級封鎖協(xié)議可防止丟失修改,并保證事務(wù)T是可恢復(fù)的。在一級封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對其進行修改,是不需要加鎖的,所以它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。使用封鎖機制解決丟失修改問題T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A等待獲得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:事
13、務(wù)T1在讀A進行修改之前先對A加X鎖當T2再請求對A加X鎖時被拒絕T2只能等待T1釋放A上的鎖后獲得對A的X鎖這時T2讀到的A已經(jīng)是T1更新過的值15T2按此新的A值進行運算,并將結(jié)果值A(chǔ)=14寫回到磁盤。避免了丟失T1的更新。沒有丟失修改2. 二級封鎖協(xié)議二級封鎖協(xié)議一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其 加S鎖,讀完后即可釋放S鎖。二級封鎖協(xié)議可以防止丟失修改和讀“臟”數(shù)據(jù)。在二級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復(fù)讀。使用封鎖機制解決讀“臟”數(shù)據(jù)問題T1T2 Xlock C R(C)=100 CC*2 W(C)=200Slock C等待ROLLBACK等
14、待 (C恢復(fù)為100)等待 Unlock C等待獲得Slock CR(C)=100Commit CUnlock C例事務(wù)T1在對C進行修改之前,先對C加X鎖,修改其值后寫回磁盤T2請求在C上加S鎖,因T1已在C上加了X鎖,T2只能等待T1因某種原因被撤銷,C恢復(fù)為原值100T1釋放C上的X鎖后T2獲得C上的S鎖,讀C=100。避免了T2讀“臟”數(shù)據(jù)不讀“臟”數(shù)據(jù) 3. 三級封鎖協(xié)議三級封鎖協(xié)議一級封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務(wù)結(jié)束才釋放。三級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復(fù)讀。使用封鎖機制解決不可重復(fù)讀問題T1T2 Slock A Slock B R(A
15、)=50 R(B)=100 求和=150 Xlock B等待 R(A)=50等待 R(B)=100等待 求和=150等待 Commit等待 Unlock A等待 Unlock B等待獲得XlockBR(B)=100BB*2W(B)=200CommitUnlock B事務(wù)T1在讀A,B之前,先對A,B加S鎖其他事務(wù)只能再對A,B加S鎖,而不能加X鎖,即其他事務(wù)只能讀A,B,而不能修改當T2為修改B而申請對B的X鎖時被拒絕只能等待T1釋放B上的鎖T1為驗算再讀A,B,這時讀出的B仍是100,求和結(jié)果仍為150,即可重復(fù)讀T1結(jié)束才釋放A,B上的S鎖。T2才獲得對B的X鎖 可重復(fù)讀4封鎖協(xié)議小結(jié)三級
16、協(xié)議的主要區(qū)別什么操作需要申請封鎖以及何時釋放鎖(即持鎖時間)不同的封鎖協(xié)議使事務(wù)達到的一致性級別不同封鎖協(xié)議級別越高,一致性程度越高X鎖S鎖一致性保證操作結(jié)束釋放事務(wù)結(jié)束釋放操作結(jié)束釋放事務(wù)結(jié)束釋放不丟失修改不讀“臟”數(shù)據(jù)可重復(fù)讀一級封鎖協(xié)議二級封鎖協(xié)議三級封鎖協(xié)議表11.1 不同級別的封鎖協(xié)議和一致性保證第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.4 活鎖和死鎖封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題死鎖
17、活鎖11.4.1 活鎖11.4.2 死鎖11.4 活鎖和死鎖11.4.1 活鎖事務(wù)T1封鎖了數(shù)據(jù)R事務(wù)T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求T2有可能永遠等待,這就是活鎖的情形 活鎖(續(xù))(a)活 鎖T1T2T3T4Lock RLock R等待Lock R等待Lock RUnlock R等待等待等待Lock R等待等待等待等待Unlock等待等待Lock R等待活鎖(續(xù))避免活鎖:采用先來先服務(wù)的策略當多個事務(wù)請求封鎖同一數(shù)據(jù)對象時按請求封鎖的先后次序
18、對這些事務(wù)排隊該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務(wù)獲得鎖11.4.1 活鎖11.4.2 死鎖11.4 活鎖和死鎖11.4.2 死鎖事務(wù)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兩個事務(wù)永遠不能結(jié)束,形成死鎖 死鎖(續(xù))T1T2Lock R1Lock R2Lock R2等待等待等待Lock R1等待等待等待等待(b) 死鎖解決死鎖的方法兩類方法1. 死鎖的預(yù)防2. 死鎖的診斷與解除1. 死鎖
19、的預(yù)防產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務(wù)封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。預(yù)防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件死鎖的預(yù)防(續(xù))預(yù)防死鎖的方法(1)一次封鎖法(2)順序封鎖法(1)一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行存在的問題降低系統(tǒng)并發(fā)度一次封鎖法(續(xù))難于事先精確確定封鎖對象數(shù)據(jù)庫中數(shù)據(jù)是不斷變化的,原來不要求封鎖的數(shù)據(jù),在執(zhí)行過程中可能會變成封鎖對象,所以很難事先精確地確定每個事務(wù)所要封鎖的數(shù)據(jù)對象。解決方法:將事務(wù)在執(zhí)行過程中可能要封鎖的數(shù)據(jù)對象全部加鎖,這就進一步降低了并發(fā)度。(2)順序封鎖法順序
20、封鎖法是預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。順序封鎖法存在的問題維護成本 數(shù)據(jù)庫系統(tǒng)中封鎖的數(shù)據(jù)對象極多,并且隨數(shù)據(jù)的插入、刪除等操作而不斷地變化,要維護這樣的資源的封鎖順序非常困難,成本很高。難以實現(xiàn) 事務(wù)的封鎖請求可以隨著事務(wù)的執(zhí)行而動態(tài)地決定,很難事先確定每一個事務(wù)要封鎖哪些對象,因此也就很難按規(guī)定的順序去施加封鎖 死鎖的預(yù)防(續(xù))結(jié)論在操作系統(tǒng)中廣為采用的預(yù)防死鎖的策略并不太適合數(shù)據(jù)庫的特點數(shù)據(jù)庫管理系統(tǒng)在解決死鎖的問題上更普遍采用的是診斷并解除死鎖的方法2. 死鎖的診斷與解除死鎖的診斷(1)超時法(2)等待圖法 (1) 超時法如果一個事務(wù)的等待時間超過了規(guī)定
21、的時限,就認為發(fā)生了死鎖優(yōu)點:實現(xiàn)簡單缺點有可能誤判死鎖時限若設(shè)置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)(2)等待圖法用事務(wù)等待圖動態(tài)反映所有事務(wù)的等待情況事務(wù)等待圖是一個有向圖G=(T,U)T為結(jié)點的集合,每個結(jié)點表示正運行的事務(wù)U為邊的集合,每條邊表示事務(wù)等待的情況若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2等待圖法(續(xù))事務(wù)等待圖圖(a)中,事務(wù)T1等待T2,T2等待T1,產(chǎn)生了死鎖圖(b)中,事務(wù)T1等待T2,T2等待T3,T3等待T4,T4又等待T1,產(chǎn)生了死鎖 圖(b)中,事務(wù)T3可能還等待T2,在大回路中又有小的回路 等待圖法(續(xù))并發(fā)控制子系統(tǒng)周期性地(比如每隔數(shù)秒)生
22、成事務(wù)等待圖,檢測事務(wù)。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。死鎖的診斷與解除(續(xù))解除死鎖選擇一個處理死鎖代價最小的事務(wù),將其撤消釋放此事務(wù)持有的所有的鎖,使其它事務(wù)能繼續(xù)運行下去第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.5 并發(fā)調(diào)度的可串行性數(shù)據(jù)庫管理系統(tǒng)對并發(fā)事務(wù)不同的調(diào)度可能會產(chǎn)生不同的結(jié)果串行調(diào)度是正確的執(zhí)行結(jié)果等價于串行調(diào)度的調(diào)度也是正確的,稱為可串行化調(diào)度 11.5.1 可串行化調(diào)度11.5.2 沖突可串行化
23、調(diào)度11.5 并發(fā)調(diào)度的可串行性11.5.1 可串行化調(diào)度可串行化(Serializable)調(diào)度多個事務(wù)的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一次序串行地執(zhí)行這些事務(wù)時的結(jié)果相同可串行性(Serializability)是并發(fā)事務(wù)正確調(diào)度的準則一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的,才認為是正確調(diào)度 可串行化調(diào)度(續(xù))例11.2現(xiàn)在有兩個事務(wù),分別包含下列操作:事務(wù)T1:讀B;A=B+1;寫回A事務(wù)T2:讀A;B=A+1;寫回B現(xiàn)給出對這兩個事務(wù)不同的調(diào)度策略 串行調(diào)度,正確的調(diào)度T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock A
24、Slock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B串行調(diào)度(a)假設(shè)A、B的初值均為2。按T1T2次序執(zhí)行結(jié)果為A=3,B=4 串行調(diào)度策略,正確的調(diào)度 串行調(diào)度,正確的調(diào)度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串行調(diào)度(b)假設(shè)A、B的初值均為2。T2T1次序執(zhí)行結(jié)果為B=3,A=4 串行調(diào)度策略,正確的調(diào)度 不可串行化調(diào)度,錯誤的調(diào)度T1T2Slock BY=R(B)=2Sloc
25、k AX=R(A)=2Unlock BUnlock AXlock AA=Y+1=3W(A)Xlock BB=X+1=3W(B)Unlock AUnlock B不可串行化的調(diào)度 執(zhí)行結(jié)果與(a)、(b)的結(jié)果都不同是錯誤的調(diào)度 可串行化調(diào)度,正確的調(diào)度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可串行化的調(diào)度 執(zhí)行結(jié)果與串行調(diào)度(a)的執(zhí)行結(jié)果相同是正確的調(diào)度 11.5.1 可串行化調(diào)度11.5.2 沖突可串行化調(diào)度11.5
26、并發(fā)調(diào)度的可串行性11.5.2 沖突可串行化調(diào)度沖突可串行化一個比可串行化更嚴格的條件商用系統(tǒng)中的調(diào)度器采用沖突操作:是指不同的事務(wù)對同一數(shù)據(jù)的讀寫操作和寫寫操作: Ri(x)與Wj(x) /*事務(wù)Ti讀x,Tj寫x,其中ij*/ Wi(x)與Wj(x) /*事務(wù)Ti寫x,Tj寫x,其中ij*/ 其他操作是不沖突操作不能交換(Swap)的動作:同一事務(wù)的兩個操作不同事務(wù)的沖突操作沖突一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務(wù)不沖突操作的次序得到另一個調(diào)度Sc,如果Sc是串行的,稱調(diào)度Sc是沖突可串行化的調(diào)度若一個調(diào)度是沖突可串行化,則一定是可串行化的調(diào)度可用這種方法判斷一個
27、調(diào)度是否是沖突可串行化的沖突可串行化(續(xù))Sc2=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B) T1 T2例11.3 今有調(diào)度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)Sc2等價于一個串行調(diào)度T1,T2。所以Sc1沖突可串行化的調(diào)度沖突可串行化(續(xù))沖突可串行化調(diào)度沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件。還有不滿足沖突可串行化條件的可串行化調(diào)度。 例11.4有3個事務(wù) T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)調(diào)度L1=W1(Y)W1(X)W2(Y)W2(X) W3(
28、X)是一個串行調(diào)度。調(diào)度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不滿足沖突可串行化。但是調(diào)度L2是可串行化的,因為L2執(zhí)行的結(jié)果與調(diào)度L1相同,Y的值都等于T2的值,X的值都等于T3的值 參見愛課程網(wǎng)11.4節(jié)動畫沖突可串行化 第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)11.6 兩段鎖協(xié)議數(shù)據(jù)庫管理系統(tǒng)普遍采用兩段鎖協(xié)議的方法實現(xiàn)并發(fā)調(diào)度的可串行性,從而保證調(diào)度的正確性 兩段鎖協(xié)議 指所有事務(wù)必須分兩個階段對數(shù)據(jù)項加鎖和
29、解鎖 在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖 在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其他封鎖兩段鎖協(xié)議(續(xù))“兩段”鎖的含義事務(wù)分為兩個階段 第一階段是獲得封鎖,也稱為擴展階段事務(wù)可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖 第二階段是釋放封鎖,也稱為收縮階段事務(wù)可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖 兩段鎖協(xié)議(續(xù))例事務(wù)Ti遵守兩段鎖協(xié)議,其封鎖序列是 :Slock A Slock B Xlock C Unlock B Unlock A Unlock C;| 擴展階段 | 收縮階段 |事務(wù)Tj不遵守兩段鎖協(xié)議,其封鎖序列是: Slo
30、ck A Unlock A Slock B Xlock C Unlock C Unlock B;兩段鎖協(xié)議(續(xù))事務(wù)T1事務(wù)T2Slock AR(A)=260Slock CR(C)=300Xlock AW(A)=160Xlock CW(C)=250Slock ASlock B等待R(B)=1000等待Xlock B等待W(B)=1100 等待Unlock A等待R(A)=160Xlock AUnlock BW(A)=210Unlock C 遵守兩段鎖協(xié)議的可串行化調(diào)度左圖的調(diào)度是遵守兩段鎖協(xié)議的,因此一定是一個可行化調(diào)度。如何驗證? 兩段鎖協(xié)議(續(xù))事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,
31、而不是必要條件。若并發(fā)事務(wù)都遵守兩段鎖協(xié)議,則對這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的若并發(fā)事務(wù)的一個調(diào)度是可串行化的,不一定所有事務(wù)都符合兩段鎖協(xié)議參見愛課程網(wǎng)11.5節(jié)動畫兩段鎖協(xié)議 兩段鎖協(xié)議(續(xù))兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖兩段鎖協(xié)議(續(xù))例遵守兩段鎖協(xié)議的事務(wù)發(fā)生死鎖遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖 事務(wù)T1事務(wù)T2Slock BR(B)=2Slock AR(A)=2Xlock
32、 A等待Xlock A等待等待第十一章 并發(fā)控制11.1 并發(fā)控制概述11.2 封鎖11.3 封鎖協(xié)議11.4 活鎖和死鎖11.5 并發(fā)調(diào)度的可串行性11.6 兩段鎖協(xié)議11.7 封鎖的粒度*11.8 其他并發(fā)控制機制11.9 小結(jié)封鎖粒度封鎖對象的大小稱為封鎖粒度(Granularity) 封鎖的對象:邏輯單元,物理單元 例:在關(guān)系數(shù)據(jù)庫中,封鎖對象:邏輯單元: 屬性值、屬性值的集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫等物理單元:頁(數(shù)據(jù)頁或索引頁)、物理記錄等選擇封鎖粒度原則封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。封鎖的粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小
33、,系統(tǒng)開銷也越?。环怄i的粒度越小,并發(fā)度較高,但系統(tǒng)開銷也就越大選擇封鎖粒度的原則(續(xù))例若封鎖粒度是數(shù)據(jù)頁,事務(wù)T1需要修改元組L1,則T1必須對包含L1的整個數(shù)據(jù)頁A加鎖。如果T1對A加鎖后事務(wù)T2要修改A中元組L2,則T2被迫等待,直到T1釋放A。如果封鎖粒度是元組,則T1和T2可以同時對L1和L2加鎖,不需要互相等待,提高了系統(tǒng)的并行度。又如,事務(wù)T需要讀取整個表,若封鎖粒度是元組,T必須對表中的每一個元組加鎖,開銷極大 選擇封鎖粒度的原則(續(xù))多粒度封鎖(Multiple Granularity Locking) 在一個系統(tǒng)中同時支持多種封鎖粒度供不同的事務(wù)選擇選擇封鎖粒度 同時考慮
34、封鎖開銷和并發(fā)度兩個因素, 適當選擇封鎖粒度需要處理多個關(guān)系的大量元組的用戶事務(wù):以數(shù)據(jù)庫為封鎖單位需要處理大量元組的用戶事務(wù):以關(guān)系為封鎖單元只處理少量元組的用戶事務(wù):以元組為封鎖單位11.7.1 多粒度封鎖11.7.2 意向鎖11.7 封鎖的粒度11.7.1 多粒度封鎖多粒度樹以樹形結(jié)構(gòu)來表示多級封鎖粒度根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度葉結(jié)點表示最小的數(shù)據(jù)粒度 多粒度封鎖(續(xù))例:三級粒度樹。根結(jié)點為數(shù)據(jù)庫,數(shù)據(jù)庫的子結(jié)點為關(guān)系,關(guān)系的子結(jié)點為元組。數(shù)據(jù)庫關(guān)系Rn關(guān)系R1元組元組元組元組 三級粒度樹多粒度封鎖協(xié)議允許多粒度樹中的每個結(jié)點被獨立地加鎖對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以同樣類型的鎖在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖顯式封鎖和隱式封鎖顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖隱式封鎖:是該數(shù)據(jù)對象沒有獨立加鎖,是由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖顯式封鎖和隱式封鎖的效果是一樣的顯式封鎖和隱式封鎖(續(xù))系統(tǒng)檢查封鎖沖突時要檢查顯式封鎖還要檢查隱式封鎖例如事務(wù)T要對關(guān)系R1加X鎖系統(tǒng)必須搜索其上級結(jié)點數(shù)據(jù)庫、關(guān)系R1還要搜索R1的下級結(jié)點,即R1中的每一個元組如果其中某一個數(shù)據(jù)對象已經(jīng)加了不相容鎖,則T必須等待 顯式封鎖和隱式封鎖(續(xù))對某個數(shù)據(jù)對象加鎖,系統(tǒng)要檢查 該數(shù)據(jù)對象有無顯式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年貴州事業(yè)單位聯(lián)考貴州省紅十字會招聘1人筆試備考題庫及答案解析
- 2026年顯微結(jié)構(gòu)觀察技術(shù)及應(yīng)用
- 2025年下一年教資筆試及答案
- 2025年大專線上筆試題目及答案
- 2026天津市東麗區(qū)國有企業(yè)基層工作人員聯(lián)合招聘18人筆試模擬試題及答案解析
- 2025年東城區(qū)中西醫(yī)筆試及答案
- 2025年南寧區(qū)圖書館事業(yè)編考試及答案
- 2025年北京市文化館筆試及答案
- 2025年財會高端人才筆試及答案
- 2025年山西省運城事業(yè)單位考試及答案
- 湖南省5年(2021-2025)高考物理真題分類匯編:專題11 近代物理(原卷版)
- 保密協(xié)議書 部隊
- 螺桿泵知識點培訓(xùn)課件
- 辦美國簽證邀請函
- T-CCTASH 003-2025 散貨機械抓斗的使用要求
- 康復(fù)醫(yī)學(xué)科進修匯報
- 工作票 操作票培訓(xùn)課件
- 地方高校數(shù)字經(jīng)濟微專業(yè)建設(shè)的優(yōu)化與突破
- 建設(shè)工程檔案編制驗收標準
- 去醫(yī)院復(fù)診請假條模板
- 《工業(yè)工程概論》課件-第3章 人因工程學(xué)
評論
0/150
提交評論