




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第八章 并發(fā)控制習(xí)題解答和解析1.在數(shù)據(jù)庫中為什么要并發(fā)控制?答:數(shù)據(jù)庫是共享資源 ,通常有許多個事務(wù)同時在運行。當多個事務(wù)并發(fā)地存取數(shù)據(jù)庫時就會產(chǎn)生同時讀取和 /或修改同一數(shù)據(jù)的情況。若對并發(fā)操作不加控制就可能會存取和存儲不正確的數(shù)據(jù) ,破壞數(shù)據(jù)庫的一致性。所以數(shù)據(jù)庫管理系統(tǒng)必須提供并發(fā)控制機制。2. 2. 并發(fā)操作可能會產(chǎn)生哪幾類數(shù)據(jù)不一致 ?用什么方法能避免各種不一致的情況 ?答:并發(fā)操作帶來的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀 "臟"數(shù)據(jù)。(1)丟失修改(Lost Update)兩個事務(wù) T1和T2讀入同一數(shù)據(jù)并修改 ,T2提交的結(jié)果破壞了(覆蓋了)T1提交的結(jié)果,導(dǎo)致T1的修改被丟失。(2)不可重復(fù)讀(Non-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由于某種原因被撤銷 ,這時T1已修改過的數(shù)據(jù)恢復(fù)原值 ,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致 ,則T2讀到的數(shù)據(jù)就為 "臟"數(shù)據(jù),即不正確的數(shù)據(jù)。避免不一致性的方法和技術(shù)就是并發(fā)控制。 最常用的技術(shù)是封鎖技術(shù)。 也可以用其他技術(shù),例如在分布式數(shù)據(jù)庫系統(tǒng)中可以采用時間戳方法來進行并發(fā)控制。3. 3. 什么是封鎖?答:封鎖就是事務(wù)T在對某個數(shù)據(jù)對象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其他的事務(wù)不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。4.基本的封鎖類型有幾種?試述它們的含義。答:基本的封鎖類型有兩種:排它鎖Locks,簡稱S 鎖)。
(ExclusiveLocks,
簡稱
X
鎖
)
和共享鎖
(Share排它鎖又稱為寫鎖。若事務(wù) T對數(shù)據(jù)對象 A加上X鎖,則只允許T讀取和修改 A,其他任何事務(wù)都不能再對 A加任何類型的鎖 ,直到T釋放A上的鎖。這就保證了其他事務(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做任何修改。5.如何用封鎖機制保證數(shù)據(jù)的一致性 ?答:DBMS在對數(shù)據(jù)進行讀、寫操作之前首先對該數(shù)據(jù)執(zhí)行封鎖操作 ,例如下圖中事務(wù) T1在對A進行修改之前先對A執(zhí)行XLock(A),即對A加X鎖。這樣,當T2請求對A加X鎖時就被拒絕,T2只能等待T1釋放A上的鎖后才能獲得對A的X鎖,這時它讀到的A是T1更新后的值,再按此新的T1的更新。
A值進行運算。這樣就不會丟失DBMS按照一定的封鎖協(xié)議 ,對并發(fā)操作進行控制 ,使得多個并發(fā)操作有序地執(zhí)行以避免丟失修改、不可重復(fù)讀和讀 "臟"數(shù)據(jù)等數(shù)據(jù)不一致性。
,就可6.什么是封鎖協(xié)議 ?不同級別的封鎖協(xié)議的主要區(qū)別是什么 ?答:在運用封鎖技術(shù)對數(shù)據(jù)加鎖時 ,要約定一些規(guī)則。例如,在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,要約定何時申請 X鎖或S鎖、何時釋放封鎖等。這些約定或者規(guī)則稱為封鎖協(xié)議(lockingProtocol) 。對封鎖方式約定不同的規(guī)則 ,就形成了各種不同的封鎖協(xié)議、不同級別的封鎖協(xié)議,例如《概論》8.3中介紹的三級封鎖協(xié)議 ,三級協(xié)議的主要區(qū)別在于什么操作需要申請封鎖,何時申請封鎖以及何時釋放鎖 (即持鎖時間的長短 )。一級封鎖協(xié)議:事務(wù) T在修改數(shù)據(jù) R之前必須先對其加 X鎖,直到事務(wù)結(jié)束才釋放。二級封鎖協(xié)議:一級封鎖協(xié)議加上事務(wù) T在讀取數(shù)據(jù) R之前必須先對其加 S鎖,讀完后即可釋放 S鎖。三級封鎖協(xié)議:一級封鎖協(xié)議加上事務(wù) T在讀取數(shù)據(jù) R之前必須先對其加 S鎖,直到事務(wù)結(jié)束才釋放。7.不同封鎖協(xié)議與系統(tǒng)一致性級別的關(guān)系是什么 ?答:不同的封鎖協(xié)議對應(yīng)不同的一致性級別。一級封鎖協(xié)議可防止丟失修改 ,并保證事務(wù) T是可恢復(fù)的。在一級封鎖協(xié)議中 ,對讀數(shù)據(jù)是不加S鎖的,所以它不能保證可重復(fù)讀和不讀 "臟"數(shù)據(jù)。二級封鎖協(xié)議除防止了丟失修改 ,還可進一步防止讀 "臟"數(shù)據(jù)。在二級封鎖協(xié)議中 ,由于讀完數(shù)據(jù)后立即釋放 S鎖,所以它不能保證可重復(fù)讀。在三級封鎖協(xié)議中 ,無論是讀數(shù)據(jù)還是寫數(shù)據(jù)都加長鎖,即都要到事務(wù)結(jié)束 才釋放封鎖。所以三級封鎖協(xié)議除防止了丟失修改和不讀 "臟"數(shù)據(jù)外,還進一步防止了不可重復(fù)讀。下面的表格清楚地說明了封鎖協(xié)議與系統(tǒng)一致性的關(guān)系。X鎖 S鎖 一致性保證操作結(jié)事務(wù)結(jié)操作結(jié)事務(wù)結(jié)不讀"臟"可重束束束不丟失束數(shù)據(jù)復(fù)讀釋放釋放釋放修改釋放一級封鎖協(xié)√√議二級封鎖協(xié)√√√√議三級封鎖協(xié)√√√√√議什么是活鎖?什么是死鎖?答:TIT2T3T4lockR....lockR...等待lockR.Unlock等待.lockR.等待.等待.等待.等待.等待Unlock等待.等待.lockR.等待..如果事務(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有可能永遠等待,這就是活鎖的情形?;铈i的含義是該等待事務(wù)等待時間太長,似乎被鎖住了 ,實際上可能被激活。如果事務(wù)Tl封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖。接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等T1釋放Rl上的鎖。這樣就出現(xiàn)了T1在等待T2,而T2又在等待Tl的局面,T1和T2兩個事務(wù)永遠不能結(jié)束,形成死鎖。T1
T2lockR1
...
lockR2.lockR2等待等待
..lockR1等待
等待9.試述活鎖的產(chǎn)生原因和解決方法。答:活鎖產(chǎn)生的原因:當一系列封鎖不能按照其先后順序執(zhí)行時 ,就可能導(dǎo)致一些事務(wù)無限期等待某個封鎖 ,從而導(dǎo)致活鎖。避免活鎖的簡單方法是采用先來先服務(wù)的策略 。當多個事務(wù)請求封鎖同一 數(shù)據(jù)對象時封鎖子系統(tǒng)按請求封鎖的先后次序?qū)κ聞?wù)排隊 ,數(shù)據(jù)對象上的鎖一旦釋放就批準申請隊列中第一個事務(wù)獲得鎖。
,10.請給出預(yù)防死鎖的若干方法。答:在數(shù)據(jù)庫中,產(chǎn)生死鎖的原因是兩個或多個事務(wù)都已封鎖了一些數(shù)據(jù)對象 ,然后又都請求已被其他事務(wù)封鎖的數(shù)據(jù)加鎖 ,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩種方法:一次封鎖法,要求每個事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行;順序封鎖法,預(yù)先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務(wù)都按這個順序?qū)嵭蟹怄i。不過,預(yù)防死鎖的策略不大適合數(shù)據(jù)庫系統(tǒng)的特點 ,具體原因可參見《概論》 8.4。請給出檢測死鎖發(fā)生的一種方法,當發(fā)生死鎖后如何解除死鎖?答:數(shù)據(jù)庫系統(tǒng)一般采用允許死鎖發(fā)生,DBMS檢測到死鎖后加以解除的方法。DBMS中診斷死鎖的方法與操作系統(tǒng)類似 ,一般使用超時法或事務(wù)等待圖法。超時法是:如果一個事務(wù)的等待時間超過了規(guī)定的時限, 就認為發(fā)生了死鎖。超時法實現(xiàn)簡單,但有可能誤判死鎖 ,事務(wù)因其他原因長時間等待超過時限 時,系統(tǒng)會誤認為發(fā)生了死鎖。若時限設(shè)置得太長 ,又不能及時發(fā)現(xiàn)死鎖發(fā)生。DBMS并發(fā)控制子系統(tǒng)檢測到死鎖后 ,就要設(shè)法解除。通常采用的方法是選擇一個處理死鎖代價最小的事務(wù) ,將其撤消,釋放此事務(wù)持有的所有鎖 ,使其他事務(wù)得以繼續(xù)運行下去。當然,對撤銷的事務(wù)所執(zhí)行的數(shù)據(jù)修改操作必須加以恢復(fù)。12.什么樣的并發(fā)調(diào)度是正確的調(diào)度 ?答:可串行化 (Sertalizable) 的調(diào)度是正確的調(diào)度??纱谢恼{(diào)度的定義: 多個事務(wù)的并發(fā)執(zhí)行是正確的 ,當且僅當其結(jié)果與 按某一次序串行執(zhí)行它們時的結(jié)果相同 ,稱這種調(diào)度策略為可串行化的調(diào)度。設(shè)T1,T2,T3是如下的3個事務(wù):T1:A:=A+2;T2:A:=A*2;T3:A:=A**2;設(shè)A的初值為 0。若這3個事務(wù)允許并行執(zhí)行,則有多少可能的正確結(jié)果,請一一列舉出來。答:A的最終結(jié)果可能有2、4、8、16。因為串行執(zhí)行次序有T1T2T3、T1T3T2、T2T1T3、T2T3T1、T3T1T2、T3T2T1。對應(yīng)的執(zhí)行結(jié)果是16、8、4、2、4、2。請給出一個可串行化的調(diào)度,并給出執(zhí)行結(jié)果答:T1T2T3slockAY=A=OUnlockAXlockASlockAA=Y+2等待寫回A(=2)等待UnlockA等待Y=A=2UnlockAXlockASlockAA=Y*2寫回UnlockAY=A=4UnlockAXlockA
A(=4)
等待等待等待寫回
A(=16)UnlockA最后結(jié)果A為16,是可串行化的調(diào)度。請給出一個非串行化的調(diào)度,并給出執(zhí)行結(jié)果。答:T1
T2
T3SlockAY=A=0UnlockASlockAY=A=0XlockA等待
UnlockAA=Y+2寫回
A(=2)
SlockAUnlockA
等待Y=A=2UnlockAXlockAXlockA等待A=Y**2等待寫回A(=4)等待UnlockAA=Y*2寫回A(=0)UnlockA最后結(jié)果A為0,為非串行化的調(diào)度。若這3個事務(wù)都遵守兩段鎖協(xié)議,請給出一個不產(chǎn)生死鎖的可串行化調(diào)度。答:
T1
T2
T3SlockAY=A=OXlockAA=Y+2
SlockA寫回A(=2)UnlockA
等待等待Y=A=2XlockA等待
SlockAA=Y*2UnlockA
寫回
A(=4)
等待等待等待Y=A=4XlockAA=Y**2寫回A(=16)UnlockA若這3個事務(wù)都遵守兩段鎖協(xié)議,請給出一個產(chǎn)生死鎖的調(diào)度。答:T1T2T3SlockAY=A=0SlockAY=A=0XlockA等待XlockA等待SlockAY=A=0XlockA等待試述兩段鎖協(xié)議的概念。答:兩段鎖協(xié)議是指所有事務(wù)必須分兩個階段對數(shù)據(jù)項加鎖和解鎖。?在對任何數(shù)據(jù)進行讀、寫操作之前,首先要申請并獲得對該數(shù)據(jù)的封鎖;?在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其他封鎖。兩段"的含義是,事務(wù)分為兩個階段:第一階段是獲得封鎖,也稱為擴展階段,在這階段,事務(wù)可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖;第二階段是釋放封鎖,也稱為收縮階段,在這階段,事務(wù)釋放已經(jīng)獲得的鎖,但是不能再申請任何鎖。試證明,若并發(fā)事務(wù)遵守兩段鎖協(xié)議,則對這些事務(wù)的并發(fā)調(diào)度是可串行化的。證明:首先以兩個并發(fā)事務(wù)T1和T2為例,存在多個并發(fā)事務(wù)的情形可以類推。根據(jù)可串行化定義可知 ,事務(wù)不可串行化只可能發(fā)生在下列兩種情況:(1)事務(wù)T1寫某個數(shù)據(jù)對象A,T2讀或?qū)慉;(2)事務(wù)Tl讀或?qū)懩硞€數(shù)據(jù)對象A,T2寫A。下面稱A為潛在沖突對象。設(shè)T1和T2訪問的潛在沖突的公共對象為不失一般性,假設(shè)這組潛在沖突對象中Y={Ai+1,?,An}符合所情況(2)。x X,T1需要X1ockx ①
{A1,A2,X={A1,A2,
?,An}?,Ai}
。均符合情況
(1)。T2需要Slockx 或Xlockx ②1)如果操作①先執(zhí)行,則T1獲得鎖,T2等待由于遵守兩段鎖協(xié)議 ,T1在成功獲得 X和Y中全部對象及非潛在沖突對象的鎖后 ,才會釋放鎖。這時如果 w X或Y,T2已獲
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年婚前財產(chǎn)公證及婚姻家庭財產(chǎn)保全與管理協(xié)議
- 2025年度全新員工離職保密協(xié)議及離職后市場競業(yè)限制合同
- 2025年度影視作品贊助協(xié)議書模板下載
- 2025年度安全風(fēng)險評估廠房租賃安全生產(chǎn)管理合同
- 2025年度特殊行業(yè)安全保衛(wèi)人工成本協(xié)議書
- 2025年度公司股份增發(fā)與投資者權(quán)益保護協(xié)議書
- 2025年度公司股東內(nèi)部關(guān)于研發(fā)創(chuàng)新成果共享的協(xié)議書
- 2025年度XX金融控股集團股東退股及風(fēng)險管理協(xié)議
- 2025年度拖欠工資解除勞動合同賠償計算規(guī)范范文
- 2025年貴州文化旅游職業(yè)學(xué)院單招職業(yè)技能測試題庫參考答案
- 山地光伏設(shè)計方案
- 2022廣州美術(shù)學(xué)院附屬中學(xué)(廣美附中)入學(xué)招生測試卷語文
- 北師大版(2019)選擇性必修第三冊Unit 7 Careers Topic Talk 導(dǎo)學(xué)案
- 春節(jié)復(fù)工復(fù)產(chǎn)安全教育培訓(xùn)
- 2024年廣西公務(wù)員考試行測真題及答案解析
- 護理質(zhì)量改進項目
- 《礦產(chǎn)地質(zhì)勘查規(guī)范 花崗偉晶巖型高純石英原料》(征求意見稿)
- 關(guān)尹子教射課件
- 《合同能源管理介紹》課件
- 養(yǎng)殖駱駝的可行性方案
- 汽車運用與維修專業(yè)(新能源方向)調(diào)研報告
評論
0/150
提交評論