數據庫系統(tǒng)原理教程課后習題及答案(第十章)_第1頁
數據庫系統(tǒng)原理教程課后習題及答案(第十章)_第2頁
數據庫系統(tǒng)原理教程課后習題及答案(第十章)_第3頁
數據庫系統(tǒng)原理教程課后習題及答案(第十章)_第4頁
數據庫系統(tǒng)原理教程課后習題及答案(第十章)_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第11章并發(fā)控制1.在數據庫中為什么要并發(fā)控制?答:數據庫是共享資源,通常有許多個事務同時在運行。當多個事務并發(fā)地存取數據庫時就會產生同時讀取和/或修改同一數據的情況。若對并發(fā)操作不加控制就可能會存取和存儲不正確的數據,破壞數據庫的一致性。所以數據庫管理系統(tǒng)必須提供并發(fā)控制機制。2.并發(fā)操作可能會產生哪幾類數據不一致?用什么方法能避免各種不一致的情況?答:并發(fā)操作帶來的數據不一致性包括三類:丟失修改、不可重復讀和讀“臟’夕數據。(l)丟失修改(lostupdate)兩個事務Tl和T2讀入同一數據并修改,T2提交的結果破壞了(覆蓋了)Tl提交的結果,導致Tl的修改被丟失。(2)不可重復讀(Non一RepeatableRead)不可重復讀是指事務Tl讀取數據后,事務幾執(zhí)行更新操作,使Tl無法再現前一次讀取結果。(3)讀“臟”數據(DirtyRead)讀“臟’夕數據是指事務Tl修改某一數據,并將其寫回磁盤,事務幾讀取同一數據后,Tl由于某種原因被撤銷,這時Tl已修改過的數據恢復原值,幾讀到的數據就與數據庫中的數據不一致,則幾讀到的數據就為“臟”數據,即不正確的數據。避免不一致性的方法和技術就是并發(fā)控制。最常用的技術是封鎖技術。也可以用其他技術,例如在分布式數據庫系統(tǒng)中可以采用時間戳方法來進行并發(fā)控制。3.什么是封鎖?基本的封鎖類型有幾種?試述它們的含義。答:封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其他的事務不能更新此數據對象。封鎖是實現并發(fā)控制的一個非常重要的技術?;镜姆怄i類型有兩種:排它鎖(ExclusiveLocks,簡稱x鎖)和共享鎖(ShareLocks,簡稱S鎖)。排它鎖又稱為寫鎖。若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其他任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其他事務在T釋放A上的鎖之前不能再讀取和修改A。共享鎖又稱為讀鎖。若事務T對數據對象A加上S鎖,則事務T可以讀A但不能修改A,其他事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。4.如何用封鎖機制保證數據的一致性?答:DBMS在對數據進行讀、寫操作之前首先對該數據執(zhí)行封鎖操作,例如下圖中事務Tl在對A進行修改之前先對A執(zhí)行xock(A),即對A加x鎖。這樣,當幾請求對A加x鎖時就被拒絕,幾只能等待Tl釋放A上的鎖后才能獲得對A的x鎖,這時它讀到的A是Tl更新后的值,再按此新的A值進行運算。這樣就不會丟失Tl的更新。DBMS按照一定的封鎖協(xié)議,對并發(fā)操作進行控制,使得多個并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復讀和讀“臟’夕數據等數據不一致性。5.什么是活鎖?什么是死鎖?答:如果事務Tl封鎖了數據R,事務幾又請求封鎖R,于是幾等待。幾也請求封鎖R,當Tl釋放了R上的封鎖之后系統(tǒng)首先批準了幾的請求,幾仍然等待。然后幾又請求封鎖R,當幾釋放了R上的封鎖之后系統(tǒng)又批準了幾的請求……幾有可能永遠等待,這就是活鎖的情形?;铈i的含義是該等待事務等待時間太長,似乎被鎖住了,實際上可能被激活。如果事務Tl封鎖了數據Rl,幾封鎖了數據凡,然后Tl又請求封鎖幾,因幾已封鎖了幾,于是Tl等待幾釋放幾上的鎖。接著幾又申請封鎖Rl,因Tl已封鎖了Rl,幾也只能等待Tl釋放Rl上的鎖。這樣就出現了Tl在等待幾,而幾又在等待T}的局面,T}和幾兩個事務永遠不能結束,形成死鎖。6.試述活鎖的產生原因和解決方法。答:活鎖產生的原因:當一系列封鎖不能按照其先后順序執(zhí)行時,就可能導致一些事務無限期等待某個封鎖,從而導致活鎖。避免活鎖的簡單方法是采用先來先服務的策略。當多個事務請求封鎖同一數據對象時,封鎖子系統(tǒng)按請求封鎖的先后次序對事務排隊,數據對象上的鎖一旦釋放就批準申請隊列中第一個事務獲得鎖。11.請給出檢測死鎖發(fā)生的一種方法,當發(fā)生死鎖后如何解除死鎖?答:數據庫系統(tǒng)一般采用允許死鎖發(fā)生,DBMS檢測到死鎖后加以解除的方法。DBMS中診斷死鎖的方法與操作系統(tǒng)類似,一般使用超時法或事務等待圖法。超時法是:如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖。超時法實現簡單,但有可能誤判死鎖,事務因其他原因長時間等待超過時限時,系統(tǒng)會誤認為發(fā)生了死鎖。若時限設置得太長,又不能及時發(fā)現死鎖發(fā)生。DBMS并發(fā)控制子系統(tǒng)檢測到死鎖后,就要設法解除。通常采用的方法是選擇一個處理死鎖代價最小的事務,將其撤消,釋放此事務持有的所有鎖,使其他事務得以繼續(xù)運行下去。當然,對撤銷的事務所執(zhí)行的數據修改操作必須加以恢復。12.什么樣的并發(fā)調度是正確的調度?答:可串行化(Serializable)的調度是正確的調度??纱谢恼{度的定義:多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結果與按某一次序串行執(zhí)行它們時的結果相同,稱這種調度策略為可串行化的調度。9.設Tl,幾,幾是如下的3個事務:Tl:A:=A+2;T2:A:=A*2;T3:A:=A**2;(A<-A*A)設A的初值為0。(l)若這3個事務允許并行執(zhí)行,則有多少可能的正確結果,請一一列舉出來。答:A的最終結果可能有2、4、8、16。因為串行執(zhí)行次序有TlT2T3、TlT3T2、T2T1T3、T2T3Tl、T3T1T2、T3T2Tl。對應的執(zhí)行結果是16、8·4·2·4·2。(2)請給

溫馨提示

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

評論

0/150

提交評論