計算機等級四級數據庫系統工程師強化試題

計算機等級考試要取得好成績平時一定要多加練習,提高做題技巧和速度。下面是小編爲大家整理的計算機等級四級數據庫系統工程師強化試題,希望對大家有幫助!

計算機等級四級數據庫系統工程師強化試題

1 . 併發操作帶來的數據不一致性包括:________ 、________ 和 ________ 。 (問答題)

查看答案

丟失修改 不可重複讀 讀“髒”數據

2 .在數據庫中爲什麼要併發控制? (填空題)

查看答案

數據庫是共享資源,通常有許多個事務同時在運行。 當多個事務併發地存取數據庫時就會產生同時讀取和/或修改同一數據的情況。若對併發操作不加控制就可能會存取和存儲不正確的數據,破壞數據庫的一致性。所以數據庫管理系統必須提供併發控制機制。

3 . 多個事務的併發執行是正確的,當且僅當其結果與按某一次序串行地執行它們時的結果相同,我們稱這種調度策略爲________的調度。 (問答題)

查看答案

可串行化

4 .併發操作可能會產生哪幾類數據不一致?用什麼方法能避免各種不一致的情況? (填空題)

查看答案

併發操作帶來的數據不一致性包括三類:丟失修改、不可重複讀和讀“髒”數據。 (1)丟失修改(Lost Update) 兩個事務T1和T2讀入同一數據並修改,T2提交的結果破壞了(覆蓋了)T1提交的結果,導致T1的修改被丟失。 (2)不可重複讀(Non-Repeatable Read) 不可重複讀是指事務T1讀取數據後,事務T2執行更新操作,使T1無法再現前一次讀取結果。不可重複讀包括三種情況:詳見《概論》8.1 p266。 (3)讀“髒”數據(Dirty Read)讀“髒”數據是指事務T1修改某一數據,並將其寫回磁盤,事務T2讀取同一數據後,T1由於某種原因被撤銷,這時T1已修改過的數據恢復原值,T2讀到的數據就與數據庫中的數據不一致,則T2讀到的數據就爲“髒”數據,即不正確的數據。 避免不一致性的方法就是併發控制。最常用的併發控制技術是封鎖技術。也可以用其他技術,例如在分佈式數據庫系統中可以採用時間戳方法來進行併發控制。

5 . 基本的封鎖類型有兩種:________ 和________ 。 (問答題)

查看答案

排它鎖(Exclusive Locks,簡稱X鎖) 共享鎖(Share Locks,簡稱S鎖)

6 .什麼是封鎖? (填空題)

查看答案

封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖後事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其他的事務不能更新此數據對象。 封鎖是實現併發控制的一個非常重要的技術。

7 . 在數據庫併發控制中,兩個或多個事務同時處在相互等待狀態,稱爲________ 。 (問答題)

查看答案

死鎖

8 .基本的封鎖類型有幾種?試述它們的含義。 (填空題)

查看答案

基本的封鎖類型有兩種: 排它鎖(Exclusive Locks,簡稱X鎖) 和共享鎖(Share Locks,簡稱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做任何修改。

9 .什麼是封鎖協議?不同級別的封鎖協議的主要區別是什麼? (填空題)

查看答案

在運用封鎖技術對數據加鎖時,要約定一些規則。例如,在運用X鎖和S鎖對數據對象加鎖時,要約定何時申請X鎖或S鎖、何時釋放封鎖等。這些約定或者規則稱爲封鎖協議(Locking Protocol)。對封鎖方式約定不同的規則,就形成了各種不同的封鎖協議。不同級別的封鎖協議,例如《概論》8.3中介紹的三級封鎖協議,三級協議的主要區別在於什麼操作需要申請封鎖,何時申請封鎖以及何時釋放鎖(即持鎖時間的長短)。 一級封鎖協議:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。 二級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖。 三級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。

10 .________ 被稱爲封鎖的粒度。 (問答題)

查看答案

封鎖對象的大小

11 .不同封鎖協議與系統一致性級別的關係是什麼? (填空題)

查看答案

不同的封鎖協議對應不同的一致性級別。一級封鎖協議可防止丟失修改,並保證事務T是可恢復的。在一級封鎖協議中,對讀數據是不加S鎖的,所以它不能保證可重複讀和不讀“髒”數據。 二級封鎖協議除防止了丟失修改,還可進一步防止讀“髒”數據。在二級封鎖協議中,由於讀完數據後立即釋放S鎖,所以它不能保證可重複讀。 在三級封鎖協議中,無論是讀數據還是寫數據都加長鎖,即都要到事務結束時才釋放封鎖。所以三級封鎖協議除防止了丟失修改和不讀“髒”數據外,還進一步防止了不可重複讀。

12 .什麼是活鎖?什麼是死鎖 ? (填空題)

查看答案

如果事務T1封鎖了數據R,事務T2又請求封鎖R,於是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之後系統首先批准了T3的請求,T2仍然等待。然後T4又請求封鎖R,當T3釋放了R上的封鎖之後系統又批准了T4的請求……T2有可能永遠等待,這就是活鎖的情形。活鎖的含義是該等待事務等待時間太長,似乎被鎖住了,實際上可能被激活。 如果事務T1封鎖了數據R1,T2封鎖了數據R2,然後T1又請求封鎖R2,因T2已封鎖了R2,於是T1等待T2釋放R2上的鎖。接着T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不能結束,形成死鎖。

13 .試述活鎖的產生原因和解決方法。 (填空題)

查看答案

活鎖產生的原因:當一系列封鎖不能按照其先後順序執行時,就可能導致一些事務無限期等待某個封鎖,從而導致活鎖。 避免活鎖的簡單方法是採用先來先服務的策略。當多個事務請求封鎖同一數據對象時,封鎖子系統按請求封鎖的先後次序對事務排隊,數據對象上的鎖一旦釋放就批准申請隊列中第一個事務獲得鎖。

14 .請給出預防死鎖的若干方法。 (填空題)

查看答案

在數據庫中,產生死鎖的原因是兩個或多個事務都已封鎖了一些數據對象,然後又都請求已被其他事務封鎖的數據加鎖,從而出現死等待。防止死鎖的發生其實就是要破壞產生死鎖的條件。預防死鎖通常有兩種方法:(1)一次封鎖法要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行。(2)順序封鎖法預先對數據對象規定一個封鎖順序,所有事務都按這個順序實行封鎖。

15 .請給出檢測死鎖發生的一種方法,當發生死鎖後如何解除死鎖? (填空題)

查看答案

數據庫系統一般採用允許死鎖發生,DBMS檢測到死鎖後加以解除的方法。 DBMS中診斷死鎖的方法與操作系統類似,一般使用超時法或事務等待圖法。 超時法是:如果一個事務的等待時間超過了規定的時限,就認爲發生了死鎖。超時法實現簡單,但有可能誤判死鎖,事務因其他原因長時間等待超過時限時,系統會誤認爲發生了死鎖。若時限設置得太長,又不能及時發現死鎖發生。 DBMS併發控制子系統檢測到死鎖後,就要設法解除。通常採用的方法是選擇一個處理死鎖代價最小的事務,將其撤消,釋放此事務持有的所有鎖,使其他事務得以繼續運行下去。當然,對撤銷的事務所執行的數據修改操作必須加以恢復。

16 .什麼樣的併發調度是正確的調度? (填空題)

查看答案

可串行化(Serializable)的調度是正確的調度。可串行化的調度的定義:多個事務的併發執行是正確的,當且僅當其結果與按某一次序串行地執行它們時的結果相同,我們稱這種調度策略爲可串行化的.調度。

17 .試述兩段鎖協議的概念。 (填空題)

查看答案

兩段鎖協議是指所有事務必須分兩個階段對數據項加鎖和解鎖。 ? 在對任何數據進行讀、寫操作之前,首先要申請並獲得對該數據的封鎖; ? 在釋放一個封鎖之後,事務不再申請和獲得任何其他封鎖。 “兩段”的含義是,事務分爲兩個階段:第一階段是獲得封鎖,也稱爲擴展階段。在這階段,事務可以申請獲得任何數據項上的任何類型的鎖,但是不能釋放任何鎖。第二階段是釋放封鎖,也稱爲收縮階段。在這階段,事務釋放已經獲得的鎖,但是不能再申請任何鎖。

18 .試證明,若併發事務遵守兩段鎖協議,則對這些事務的併發調度是可串行化的。 (填空題)

查看答案

首先以兩個併發事務T1和T2爲例,存在多個併發事務的情形可以類推。 根據可串行化定義可知,事務不可串行化只可能發生在下列兩種情況: 1.事務T1寫某個數據對象A,T2讀或寫A; 2.事務T1讀或寫某個數據對象A,T2寫A。下面稱A爲潛在衝突對象。設T1和T2訪問的潛在衝突的公共對象爲{A1, A2, …, An}。不失一般性,假設這組潛在衝突對象中X={A1,A2, …, Ai}均符合情況1。 Y={Ai+1, …,An}符合所情況2。 ?x?X,T1需要Xlock x ① T2需要Slock x或Xlockx ② (1) 如果操作①先執行,則T1獲得鎖,T2等待由於遵守兩段鎖協議,T1在成功獲得X和Y中全部對象及非潛在衝突對象的鎖後,纔會釋放鎖這時如果?w?X或Y,T2已獲得w的鎖,則出現死鎖否則,T1在對X、Y中對象全部處理完畢後,T2才能執行這相當於按T1、T2的順序串行執行根據可串行化定義,T1和T2的調度是可串行化的。(2) 操作②先執行的情況與(1)對稱因此,若併發事務遵守兩段鎖協議,在不發生死鎖的情況下,對這些事務的併發調度一定是可串行化的。

19 .爲什麼要引進意向鎖? 意向鎖的含義是什麼? (填空題)

查看答案

引進意向鎖是爲了提高封鎖子系統的效率。該封鎖子系統支持多種封鎖粒度。原因是:在多粒度封鎖方法中一個數據對象可能以兩種方式加鎖—顯式封鎖和隱式封鎖(有關概念參見《概論》8.7.1)。因此係統在對某一數據對象加鎖時不僅要檢查該數據對象上有無(顯式和隱式)封鎖與之衝突;還要檢查其所有上級結點和所有下級結點,看申請的封鎖是否與這些結點上的(顯式和隱式)封鎖衝突;顯然,這樣的檢查方法效率很低。爲此引進了意向鎖。 意向鎖的含義是:對任一結點加鎖時,必須先對它的上層結點加意向鎖。 例如事務T要對某個元組加X鎖,則首先要對關係和數據庫加IX鎖。換言之,對關係和數據庫加IX鎖,表示它的後裔結點—某個元組擬(意向)加X鎖。引進意向鎖後,系統對某一數據對象加鎖時不必逐個檢查與下一級結點的封鎖衝突了。例如,事務T要對關係R加X鎖時,系統只要檢查根結點數據庫和R本身是否已加了不相容的鎖(如發現已經加了IX,則與X衝突),而不再需要搜索和檢查R中的每一個元組是否加了X鎖或S鎖。

20 .試述常用的意向鎖:IS鎖,IX鎖,SIX鎖,給出這些鎖的相容矩陣。 (填空題)

查看答案

IS鎖如果對一個數據對象加IS鎖,表示它的後裔結點擬(意向)加S鎖。例如,要對某個元組加S鎖,則要首先對關係和數據庫加IS鎖 IX鎖如果對一個數據對象加IX鎖,表示它的後裔結點擬(意向)加X鎖。例如,要對某個元組加X鎖,則要首先對關係和數據庫加IX鎖。 SIX鎖如果對一個數據對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。