




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第八章并發限制習題解答和解析1. 1.在數據庫中為什么要并發限制答:數據庫是共享資源,通常有許多個事務同時在運行.當多個事務并發地存取數據庫時就會產生同時讀取和/或修改同一數據的情況.假設對并發操作不加限制就可能會存取和存儲不正確的數據,破壞數據庫的一致性.所以數據庫治理系統必須提供并發限制機制.2. 2.并發操作可能會產生哪幾類數據不一致用什么方法能預防各種不一致的情況答:并發操作帶來的數據不一致性包括三類:喪失修改、不可重復讀和讀“臟數據.(1)喪失修改(LostUpdate)兩個事務T1和T2讀入同一數據并修改,T2提交的結果破壞了(覆蓋了)T1提交的結果,導致T1的修改被喪失.(2)不
2、可重復讀(Non-RepeatableRead)不可重復讀是指事務T1讀取數據后,事務T2執行更新操作,使T1無法再現前一次讀取結果.不可重復讀包括三種情況:詳見?概論?(P266)oI(3)讀“臟數據(DirtyRead)讀“臟數據是指事務T1修改某一數據,并將其寫回磁盤,事務T2讀取同一數據后,T1由于某種原因被撤銷,這時T1已修改正的數據恢復原值,T2讀到的數據就與數據庫中的數據不一致,那么T2讀到的數據就為“臟數據,即不正確的數據.預防不一致性的方法和技術就是并發限制.最常用的技術是封鎖技術.也可以用其他技術,例如在分布式數據庫系統中可以采用時間戳方法來進行并發限制.3. 3,什么是封
3、鎖答:封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,先向系統發出請求,對其加蝴加鎖后事務T就對該數據對象有了一定的限制,在事務T釋放它的鎖之前,其他的事務不能更新此數據對象.封鎖是實現并發限制的一個非常重要的技術.4. 4.根本的封鎖類型有幾種試述它們的含義.答:根本的封鎖類型有兩種:排它鎖(ExclusiveLocks,簡稱X鎖)和共享鎖(ShareLocks,簡稱S鎖)©排它鎖又稱為寫鎖.假設事務T對數據對象A加上X鎖,那么只允許T讀取和修改A,其他任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖.這就保證了其他事務在T釋放A上的鎖之前不能再讀取和修改Ao共享鎖又稱
4、為讀鎖.假設事務T對數據對象A加上S鎖,那么事務T可以讀A但不能修改A,其他事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖.這就保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改.5. 如何用封鎖機制保證數據的一致性答:DBMS在對數據進行讀、寫操作之前首先對該數據執行封鎖操作,例如以下圖中事務T1在對A進行修改之前先對A執行XLock(A),即對A加X鎖.這樣,當T2請求對A加X鎖時就被拒絕,T2只能等待T1釋放A上的鎖后才能獲得對A的X鎖,這時它讀到的A是T1更新后的值,再按此新的A值進行運算.這樣就不會喪失T1的更新.UZlock削在48p讀A=16<,A
5、-A-1寫回A=15COTOlltUnlockATZt,圖啾"等待“等傳,等待領,花得出嶷1讀A=15-'寫回?二如Com;WUnlockA*DBMS根據一定的封鎖協議,對并發操作進行限制,使得多個并發操作有序地執行,就可以預防去失修改、不可重復讀和讀“臟數據等數據不一致性.6. .什么是封鎖協議不同級別的封鎖協議的主要區別是什么答:在運用封鎖技術對數據加鎖時,要約定一些規那么.例如,在運用X鎖和S鎖對數據對象加鎖時,要約定何時申請X鎖或S鉞、何時釋放封鎖等.這些約定或者規那么稱為封鎖協議(lockingProtocol)o對封鎖方式約定不同的規那么,就形成了各種不同的封鎖t
6、辦議、不同級別的封鎖協議,例如?概論?中介紹的三級封鎖協議,三級協議的主要區別在于什么操作需要申請封鎖,何時申請封鎖以及何時釋放鎖(即持鎖時間的長短).一級封鎖協議:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放.二級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完后即可釋放S鎖.<三級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放.7. 不同封鎖協議與系統一致性級別的關系是什么答:不同的封鎖協議對應不同的一致性級別.一級封鎖協議可預防喪失修改,并保證事務T是可恢復的.在一級封鎖協議中,對讀數據是不加S鎖的,所以它不
7、能保證可重復讀和不讀“臟數據.二級封鎖協議除預防了喪失修改,還可進一步預防讀臟數據o在二級封鎖協議中,由于讀完數據后立即釋放S鎖,所以它不能保證可更復讀.在三級封鎖協議中,無論是讀數據還是寫數據都加長鎖,即都要到事務結束才釋放封鎖.所以三級封鎖協議除預防了喪失修改和不讀臟“數據外,還進一步預防了不可重復讀.下面的表格清卷地說明了封鎖協議與系統一致性的關系.一致性保證操作結束釋放事務結束釋放操作結束釋放事務結束釋放不喪失修改.不讀“臟數據可重復讀一級封鎖協議IV二級封鎖協議VIVJ三級封鎖協義VVVJ8,什么是活鎖什么是死鎖:TIT2T3T4lockR*lockR等待IockRUnIock等待I
8、ockR.等待等待.等待等待.等待Unlock等待.等待IockR等待*如果事務T1封鎖了數據R,事務T2飛又請求封鎖R,于是T2等待.T3也請求封鎖R,當T1釋放了R上的封鎖之后系統首先批準了T3的請求,T2仍然等株然后T4又請求封鎖R,當T3釋放了R上的封鎖之后系統又批準了T4的請求T2有可能永遠等待,這就是活鎖的情形.活鎖的含義是該等待事務等待時間太長,似乎被鉞住了,實際上可能被激活.如果事務TI封鎖了數據R1,T2封鎖了數據R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖.接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放RI上的鎖
9、76;這樣就出現了T1在等待T2,而T2又在等待TI的局面,T1和T2兩個事務永遠不能結束,形成死鎖.T1T2IockR1.IockR2lockR2IockR1等待等待等待等待9 .試述活鎖的產生原因和解決方法.答:活鎖產生的原因:當一系列封鎖不能根據其先后順序執行時,就可能導致一些事務無限期等待某個封鎖,從而導致活鎖.預防活鎖的簡單方法是采用先來先效勞的策聯當多個事務請求封鎖同一數據對象時,封鎖子系統按請求封鎖的先后次序對事務排隊,數據對象上的鎖一旦釋放就批準申請隊列中第一個事務獲得鉞.10 .請給出預防死鎖的假設干方法,答:在數據庫中,產生死鎖的原因是兩個或多個事務都已封鉞了一些數據對象,
10、然后又都請求已被其他事務封鎖的數據加鎖,從而出現死等待.預防死鎖的發生其實就是要破壞產生死鎖的條件.預防死鎖通常有兩種方法:一次封鉞法,要求每個事務必須一次將所有要使用的數據全部加鎖,否那么就不能繼續執行:(2)順序封軾法,預先對數據對象規定一個封鎖順序,所有事務都按這個順序實行封鎖.不過,預防死鎖的策略不大適合數據庫系統的特點,具體原因可參見?概論?O11 .請給出檢測死鎖發生的一種方法,當發生死鎖后如何解除死鎖(答:數據庫系統一般采用允許死鎖發生,DBMS檢測到死鎖后加以解除的方法.DBMS中診斷死鎖的方法與操作系統類似,一般使用超時法或事務等待圖法.超時法是:如果一個事務的等待時間超過了
11、規定的時限,就認為發生了死鎖.超時法實現簡單,但有可能誤判死鉞,事務因其他原因長時間等待超過時限時,系統會誤認為發生了死鎖.假設時限設置得太長,又不能及時發現死鎖發生.DBMS并發限制子系統檢測到死鎖后,就要設法解除.通常采用的方法是選擇一個處理死鎖代價最小的事務,將其撤消,釋放此事務持有的所有鉞,使其他事務得以繼續運行下去.當然,對撤銷的事務所執行的數據修改操作必須加以恢復.12 .什么樣的并發調度是正確的調度答:可串行化(Sertalizable)的調度是正確的調度.可串行化的調度的定義:多個事務的并發執行是正確的,當且僅當其結果與按某一次序串行執行它們時的結果相同,稱這種調度策略為可串行
12、化的調度.13 .設T1,T2,T3是如下的3個事務:T1:A:=A+2;T2:A:=A*2;T3:A:=A*2;設A的初值為0.假設這3個事務允許并行執行,那么有多少可能的正確結果,請一一列舉出來.答:A的最終結果可能有2、4、8、16.由于串行執行次序有T1T2T3、T1T3T2、T2T1T3、T2T3T1、T3T1T2、T3T2T1.對應的執行結果是16、8、4、2、4、2o請給出一個可串行化的調度,并給出執行結果令:T1T2T3sIockAY=A=0UnIockAXIockASlockAA=Y+2>等待寫回A(=2)等待UnIockA等待Y=A=2UnIockAXIockASlo
13、ckAA=Y*2等待寫回A(=4)等待UnIockA等待Y=A=4UnlockAXIockA寫回A(=16)UnlockA最后結果A為16,是可串行化的調度,請給出一個非串行化的調度,并給出執行結果.卷:T1T2T3SlockAY=A=0UnIockASlockAY=A=OXlockA等待UnIockAA=Y+2寫回A(=2)SlockAUnIockA等待Y=A=2UnIockAXIockAXlockA等待A=Y*2等待寫回A(=4)等待UnIockAA=Y*2寫回A(=0)UnIockA最后結果A為0,為非串行化的調度.假設這3個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度.答:
14、T1T2T3SlockAY=A=0XlockAA=Y+2SlockA寫回A(=2)等待UnlockP等待<Y=A=2XlockA等待SlockAA=Y*2等待寫回A(=4)等待UnlockA等待Y=A=4XlockAA=Y*2寫回A(=16)UnlockA假設這3個事務都遵守兩段鎖協議,請給出一個產生死鎖的調度.SlockAY=A=0SlockAY=A=0XlockA等待XIockA等待SIockAY=A=0XIockA等待14 .試述兩段鎖協議的概念.答:兩段鎖協議是指所有事務必須分兩個階段對數據項加鎖和解鎖.在對任何數據進行讀、寫操作之前,首先要申請并獲得對該數據的封鎖;-在釋放一個
15、封鉞之后,事務不再申請和獲得任何其他封鎖."兩段的含義是,事務分為兩個階段:(第一階段是獲得封鎖,也稱為擴展階段,在這階段,事務可以申請獲得任何數據項上的任何類型的鎖,但是不能釋放任何鎖:第二階段是釋放封鎖,也稱為收縮階段,在這階段,事務釋放已經獲得的鎖,但是不能再申請任何領.15 .試證實,假設并發事務遵守兩段鎖協議,那么對這些事務的并發調度是可串行化的.證實:首先以兩個弁發事務T1和T2為例,存在多個并發事務的情形可以類推.根據可串行化定義可知,事務不可串行化只可能發生在以下兩種情況:(1)事務T1寫某個數據對象A,T2讀或寫A:(2)事務TI讀或寫某個數據對象A,T2寫Ao下面稱A為潛在沖突對象.設T1和T2訪問的潛在沖突的公共對象為A1,A2,An.不失一般性,假設這組潛在沖突對象中X=A1,A2,Ai均符合情況(1).Y=Ai+1,-,An)符合所情況,VXX,T1需要XlockxT2需要Slockx或Xlockx1) 1)如果操作先執行,那么T1獲得鎖,T2等待由于遵守兩段鎖協議,T1在成功獲得X和Y中全部對象及非潛在沖突對象的鎖后,才會釋放鎖.這時如果Avex或Y,T2已獲得w的銀,那
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- “春瓶”名稱的釋義及其原始功能探究
- 新媒體裝置交互-洞察及研究
- 培訓機構績效管理辦法
- 公益放映預算管理辦法
- 隱私保護成本效益-洞察及研究
- 社會治理:近二十年國內社會治理創新研究
- 2025版生產安全事故應急預案5匯編
- 檔案耗材供應管理辦法
- 構成一般事故的指標是
- 航空應急救援體系
- 2025至2030中國直聯式真空泵行業市場現狀分析及競爭格局與投資發展報告
- 2025至2030中國無源光分路器行業發展趨勢分析與未來投資戰略咨詢研究報告
- 痛風治療與護理課件
- T/CCBD 19-2022品牌餐廳評價規范
- 河南省南陽市內鄉縣2025屆數學七下期末調研試題含解析
- 校際結對幫扶協議書
- 第四版(2025)國際壓力性損傷潰瘍預防和治療臨床指南解讀
- 企業電工面試題及答案
- 倉庫與生產線的有效對接計劃
- 《心律失常患者的護理》課件
- 2025江蘇省惠隆資產管理限公司招聘30人易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論