并發(fā)控制課后答案_第1頁
并發(fā)控制課后答案_第2頁
并發(fā)控制課后答案_第3頁
并發(fā)控制課后答案_第4頁
并發(fā)控制課后答案_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第八章并發(fā)控制習(xí)題解答和解析1. 1.在數(shù)據(jù)庫(kù)中為什么要并發(fā)控制?答:數(shù)據(jù)庫(kù)是共享資源,通常有許多個(gè)事務(wù)同時(shí)在運(yùn)行。當(dāng)多個(gè)事務(wù)并發(fā)地存取數(shù)據(jù)庫(kù)時(shí)就會(huì)產(chǎn)生同時(shí)讀取和/或修改同一數(shù)據(jù)的情況。若對(duì)并發(fā)操作不加控制就可能會(huì)存取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。所以數(shù)據(jù)庫(kù)管理系統(tǒng)必須提供并發(fā)控制機(jī)制。2. 2.并發(fā)操作可能會(huì)產(chǎn)生哪幾類數(shù)據(jù)不一致相什么方法能避免各種不一致的情況?答:并發(fā)操作帶來的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀臟數(shù)據(jù)。丟失修改(LostUpdate)兩個(gè)事務(wù)T1和T2讀入同一數(shù)據(jù)并修改,T2提交的結(jié)果破壞了(覆蓋了)T1提交的結(jié)果,導(dǎo)致T1的修改被丟失。不可重復(fù)讀(N

2、on-RepeatableRead/可重復(fù)讀是指事務(wù)T1讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。不可重復(fù)讀包括三種情況:詳見概論8.1(P266)。(3)讀臟數(shù)據(jù)(DirtyRead)讀臟數(shù)據(jù)是指事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷,這時(shí)T1已修改過的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為臟數(shù)據(jù),即不正確的數(shù)據(jù)。避免不一致性的方法和技術(shù)就是并發(fā)控制。最常用的技術(shù)是封鎖技術(shù)。也可以用其他技術(shù),例如在分布式數(shù)據(jù)庫(kù)系統(tǒng)中可以采用時(shí)間戳方法來進(jìn)行并發(fā)控制。3. 3.什么是封鎖?答:封鎖就是事務(wù)T

3、在對(duì)某個(gè)數(shù)據(jù)對(duì)象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其他的事務(wù)不能更新此數(shù)據(jù)對(duì)象。封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。4. 4基本的封鎖類型有幾種?式述它們的含義。答:基本的封鎖類型有兩種:排它鎖(ExclusiveLocks,簡(jiǎn)稱X鎖)和共享鎖(ShareLocks簡(jiǎn)不S鎖)。排它鎖又稱為寫鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其他任何事務(wù)都不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改Ao共享鎖又稱為讀鎖。若事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上S

4、鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對(duì)A加S鎖,而不能加X鎖直到T釋放A上的S鎖。這就保證了其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對(duì)A做任何修改。5. 如何用封鎖機(jī)制保證數(shù)據(jù)的一致性?答:DBMS在對(duì)數(shù)據(jù)進(jìn)行讀、寫操作之前首先對(duì)該數(shù)據(jù)執(zhí)行封鎖操作例如下圖中事務(wù)T1在又tA進(jìn)行修改之前先對(duì)A執(zhí)行XLock(A),即對(duì)A加X鎖。這樣,當(dāng)T2請(qǐng)求對(duì)A加X鎖時(shí)就被拒絕,T2只能等待T1釋放A上的鎖后才能獲得對(duì)A的X鎖,這時(shí)它讀到的A是T1更新后的值,再按此新的A值進(jìn)行運(yùn)算。這樣就不會(huì)丟失T1的更新。,U舟器得事C3LI6比LE,區(qū)/.-JbJ.ii1-IrrkZlHWJL百所,藥琳

5、,if-SXl>±Ju*薩e-n,二匕l(fā)-Hword編輯版.DBMS按照一定的封鎖協(xié)議,對(duì)并發(fā)操作進(jìn)行控制,使得多個(gè)并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復(fù)讀和讀臟數(shù)據(jù)等數(shù)據(jù)不一致性。6. 什么是封鎖協(xié)議/同級(jí)別的封鎖協(xié)議的主要區(qū)別是什么?答:在運(yùn)用封鎖技術(shù)又t數(shù)據(jù)加鎖時(shí),要約定一些規(guī)則。例如,在運(yùn)用X鎖和S鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí)要約定何時(shí)申請(qǐng)X鎖或S鎖、何時(shí)釋放封鎖等。這些約定或者規(guī)則稱為封鎖協(xié)議(lockingProtocol)對(duì)封鎖方式約定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議、不同級(jí)別的封鎖協(xié)議,例如概論8.3中介紹的三級(jí)封鎖協(xié)議,三級(jí)協(xié)議的主要區(qū)別在于什么操作需要

6、申請(qǐng)封鎖,何時(shí)申請(qǐng)封鎖以及何時(shí)釋放鎖(即持鎖時(shí)間的長(zhǎng)短)。一級(jí)封鎖協(xié)議:事務(wù)T在修改數(shù)據(jù)R之前必須先對(duì)其加X鎖直到事務(wù)結(jié)束才釋放。二級(jí)封鎖協(xié)議:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后即可釋放S鎖。三級(jí)封鎖協(xié)議:一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖直到事務(wù)結(jié)束才釋放。7.不同封鎖協(xié)議與系統(tǒng)一致卜級(jí)別的關(guān)系是什么?答:不同的封鎖協(xié)議對(duì)應(yīng)不同的一致性級(jí)別。一級(jí)封鎖協(xié)議可防止丟失修改,并保證事務(wù)T是可恢復(fù)的。在一級(jí)封鎖協(xié)議中,對(duì)讀數(shù)據(jù)是不加S鎖的,所以它不能保證可重復(fù)讀和不讀臟數(shù)據(jù)。二級(jí)封鎖協(xié)議除防止了丟失修改,還可進(jìn)一步防止讀臟數(shù)據(jù)。在二級(jí)封鎖協(xié)議中,由于讀

7、完數(shù)據(jù)后立即釋放S鎖所以它不能保證可重復(fù)讀。在三級(jí)封鎖協(xié)議中,無論是讀數(shù)據(jù)還是寫數(shù)據(jù)都加長(zhǎng)鎖,即都要到事務(wù)結(jié)束才釋放封鎖。所以三級(jí)封鎖協(xié)議除防止了丟失修改和不讀臟數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀。下面的表格清楚地說明了封鎖協(xié)議與系統(tǒng)一致性的關(guān)系。X鎖S鎖一致性保證操作結(jié)事務(wù)結(jié)操作結(jié)事務(wù)結(jié)不丟失不讀臟可重束束束復(fù)修數(shù)釋釋釋釋一級(jí)封鎖二級(jí)封鎖三級(jí)封鎖議word編輯版.?十么是活鎖?什么是死鎖8.T2T3T4答:TIlockR.lockR.等待lockR.Unlock等待lockR.等待等待.等待等待.等待Unlock等待.等待lockR.等待如果事務(wù)T1封鎖了數(shù)據(jù)R,事務(wù)T2飛又請(qǐng)求封鎖R,于是T

8、2等待。T3也請(qǐng)求封鎖R,當(dāng)T1釋放了R上的封鎖之后系統(tǒng)首先批準(zhǔn)了T3的請(qǐng)求,T2仍然等待。然后T4又請(qǐng)求封鎖R,當(dāng)T3釋放了R上的封鎖之后系統(tǒng)又批準(zhǔn)了T4的請(qǐng)求T2有可能永遠(yuǎn)等待,這就是活鎖的情形?;铈i的含義是該等待事務(wù)等待時(shí)間太長(zhǎng),似乎被鎖住了,實(shí)際上可能被激活。如果事務(wù)Tl封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請(qǐng)求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請(qǐng)封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放Rl上的鎖。這樣就出現(xiàn)了T1在等待T2,而T2又在等待Tl的局面,T1和T2兩個(gè)事務(wù)永遠(yuǎn)不能結(jié)束,形成死鎖。T1T2lockR1.lockR2

9、.lockR2.等待等待lockR1等待等待9 .試述活鎖的產(chǎn)生原因和解決方法。答:活鎖產(chǎn)生的原因:當(dāng)一系列封鎖不能按照其先后順序執(zhí)行時(shí),就可能導(dǎo)致一些事務(wù)無限期等待某個(gè)封鎖,從而導(dǎo)致活鎖。避免活鎖的簡(jiǎn)單方法是采用先來先服務(wù)的策略。當(dāng)多個(gè)事務(wù)請(qǐng)求封鎖同一數(shù)據(jù)對(duì)象時(shí),封鎖子系統(tǒng)按請(qǐng)求封鎖的先后次序?qū)κ聞?wù)排隊(duì),數(shù)據(jù)對(duì)象上的鎖一旦釋放就批準(zhǔn)申請(qǐng)隊(duì)列中第一個(gè)事務(wù)獲得鎖。10 .請(qǐng)給出預(yù)防死鎖的若干方法。答:在數(shù)據(jù)庫(kù)中,產(chǎn)生死鎖的原因是兩個(gè)或多個(gè)事務(wù)都已封鎖了一些數(shù)據(jù)對(duì)象,然后又都word編輯版.請(qǐng)求已被其他事務(wù)圭d鎖的數(shù)據(jù)加鎖,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實(shí)就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有

10、兩種方法:一次封鎖法,要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行;(2)順序封鎖法,預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序?qū)嵭蟹怄i。不過,預(yù)防死鎖的策略不大適合數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn),具體原因可參見概論8.4。11 .請(qǐng)給出檢測(cè)死鎖發(fā)生的一種方法,當(dāng)發(fā)生死鎖后如何解除死鎖?答:數(shù)據(jù)庫(kù)系統(tǒng)一般采用允許死鎖發(fā)生,DBMS檢測(cè)到死鎖后加以解除的方法。DBMS中診斷死鎖的方法與操作系統(tǒng)類似,一般使用超時(shí)法或事務(wù)等待圖法。超時(shí)法是:如果一個(gè)事務(wù)的等待時(shí)間超過了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖。超時(shí)法實(shí)現(xiàn)簡(jiǎn)單,但有可能誤判死鎖,事務(wù)因其他原因長(zhǎng)時(shí)間等待超過時(shí)限時(shí),系統(tǒng)會(huì)誤認(rèn)為發(fā)

11、生了死鎖。若時(shí)限設(shè)置得太長(zhǎng),又不能及時(shí)發(fā)現(xiàn)死鎖發(fā)生。DBMS并發(fā)控制子系統(tǒng)檢測(cè)到死鎖后,就要設(shè)法解除。通常采用的方法是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有鎖,使其他事務(wù)得以繼續(xù)運(yùn)行下去。當(dāng)然,對(duì)撤銷的事務(wù)所執(zhí)行的數(shù)據(jù)修改操作必須加以恢復(fù)。12 .什么樣的并發(fā)調(diào)度是正確的調(diào)度?答:可串行化(Sertalizable)的調(diào)度是正確的調(diào)度??纱谢恼{(diào)度的定義:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行執(zhí)行它們時(shí)的結(jié)果相同,稱這種調(diào)度策略為可串行化的調(diào)度。13 .設(shè)T1,T2,T3是如下的3個(gè)事務(wù):T1:A:=A+2;T2:A:=A*2;T3:A:=A*2;

12、設(shè)A的初值為0。若這3個(gè)事務(wù)允許并行執(zhí)行,則有多少可能的正確結(jié)果,請(qǐng)一一列舉出來。答:A的最終結(jié)果可能有2、4、8、16。因?yàn)榇袌?zhí)行次序有T1T2T3、T1T3T2、T2T1T3、T2T3T1、T3T1T2、T3T2T1對(duì)應(yīng)的執(zhí)行結(jié)果是16、8、4、2、4、2。請(qǐng)給出一個(gè)可串行化的調(diào)度,并給出執(zhí)行結(jié)果答:T1T2T3slockAY=A=OUnlockAXlockASlockAA=Y+2等待寫回A(=2)等待UnlockA等待Y=A=2UnlockAXlockASlockAA=Y*2等待word編輯版.寫回A(=4)等待UnlockA等待Y=A=4UnlockAXlockA寫回A(=16)Un

13、lockA最后2果A為16,是可串行化的調(diào)度。請(qǐng)給出一個(gè)非串行化的調(diào)度,并給出執(zhí)行結(jié)果。答:T1T2T3SlockAY=A=0UnlockASlockAY=A=0XlockA等待UnlockAA=Y+2寫回A(=2)SlockAUnlockA等待Y=A=2UnlockAXlockAXlockA等待A=Y*2等待寫回A(=4)等待UnlockAA=Y*2寫回A(=0)UnlockA最后2果A為0,為非串行化的調(diào)度。若這3個(gè)事務(wù)都遵守兩段鎖協(xié)議,請(qǐng)給出一個(gè)不產(chǎn)生死鎖的可串行化調(diào)度答:T1T2T3SlockAY=A=OXlockAA=Y+2SlockA寫回A(=2)等待UnlockA等待Y=A=2X

14、lockAword編輯版.SlockA等待等待A=Y*2等待寫回A(=4)等待UnlockAY=A=4XlockAA=Y*2A(=16)寫回UnlockA請(qǐng)給出一個(gè)產(chǎn)生死鎖的調(diào)度。3個(gè)事務(wù)都遵守兩段鎖協(xié)議,(5)若這答:T1T2T3SlockAY=A=0SlockAY=A=0XlockA等待XlockA等待SlockAY=A=0XlockA等待試述兩段鎖協(xié)議的概念。14.答:兩段鎖協(xié)議是指所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)加鎖和解鎖。首先要申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖;?在釋放一個(gè),置E對(duì)任何數(shù)據(jù)進(jìn)行讀、寫操作之前事務(wù)不再申請(qǐng)和獲得任何其他封鎖。封鎖之后,的含義是,事務(wù)分為兩個(gè)階段:兩段數(shù)據(jù)項(xiàng)上的任,

15、事務(wù)可以申請(qǐng)獲得任何第一階段是獲得封鎖,也稱為擴(kuò)展階段,在這階段何類型的鎖,但是不能釋放任何鎖;但是不能再申事務(wù)釋放已經(jīng)獲得的鎖,也稱為收縮階段,在這階段,第二階段是釋放封鎖請(qǐng)任何鎖。則對(duì)這些事務(wù)的并發(fā)調(diào)度是可串行化的。,15試證明若并發(fā)事務(wù)遵守兩段鎖協(xié)議,存在多個(gè)并發(fā)事務(wù)的情形可以類推。根據(jù)可,T1和T2為例證明:首先以兩個(gè)并發(fā)事務(wù)事務(wù)不可串行化只可能發(fā)生在下列兩種情況:串行化定義可知,讀或?qū)慉;(1)事務(wù)T1寫某個(gè)數(shù)據(jù)對(duì)象A,T2Ao事務(wù)Tl讀或?qū)懩硞€(gè)數(shù)據(jù)對(duì)象A,T2寫(2)為潛在沖突對(duì)象。下面稱A,An。和設(shè)T1T2訪問的潛在沖突的公共對(duì)象為A1,A2,AnY=Ai+1,(1),Ai假設(shè)這組潛在沖突對(duì)象中不失一般性,X=A1,A2,均符合情況。word編輯版.o(2)符合所情況?X,T1需要xX1ockx或XlockxT2需要Slockx等待T1獲得鎖,T21)如果操作先執(zhí)行,則1)才會(huì),丫中全部對(duì)象及非潛在沖突對(duì)象的鎖后,T1由于遵守兩段鎖協(xié)議在成功獲得X和釋放鎖。?則出現(xiàn)死鎖;的鎖,X或Y,T2這時(shí)如果已獲得ww才能執(zhí)行。中對(duì)象全部處理完畢后,T2在又tX、Y否則,T1T2的調(diào)度是可串行化的。,根據(jù)可串行化定

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論