版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、三級(jí)封鎖協(xié)議例子【篇一:三級(jí)封鎖協(xié)議例子】篇一:數(shù)據(jù)庫(kù)中的封鎖協(xié)議并發(fā)產(chǎn)生的數(shù)據(jù)不一致有:丟失修改,讀臟數(shù)據(jù),不可重復(fù)讀 兩種鎖: s 鎖后,本事務(wù)就只能讀取數(shù)據(jù)而不能修改。其他事務(wù)可以加 s 鎖來讀取數(shù)據(jù),但不能加 x 鎖修改數(shù)據(jù)。即:只要數(shù)據(jù)上有s 鎖,任何事務(wù)都只能再對(duì)其加 s 讀取,而不能加 x 鎖修改。鎖后,本事務(wù)可以讀取和修改數(shù)據(jù)。其他事務(wù)不能加任何鎖,從而也不能讀取和修改數(shù)據(jù)。封鎖協(xié)議有:三級(jí)封鎖協(xié)議以及兩段鎖協(xié)議 一級(jí)封鎖協(xié)議:寫數(shù)據(jù)前加 x 鎖,事務(wù)結(jié)束釋放x 解決丟失修改問題。二級(jí)封鎖協(xié)議:一級(jí)之上,讀數(shù)據(jù)前加 s 鎖,讀完釋放 鎖。一級(jí)之上解決讀臟數(shù)據(jù)問題。三級(jí)封鎖協(xié)議:
2、二級(jí)之 上,事務(wù)結(jié)束才釋放s 鎖。二級(jí)之上解決不可重復(fù)讀問題。兩段鎖協(xié)議( 2pl ):讀數(shù)據(jù)前加事務(wù)如果對(duì)不同數(shù)據(jù)加鎖,解鎖都是放到后面一塊兒進(jìn)行的。注意,以前一直弄錯(cuò),這兒是一個(gè)事務(wù),如果是并發(fā) 事務(wù), a 事務(wù)的解鎖可以放到 b 事務(wù)之前。兩段鎖協(xié)議解決的是事務(wù)并發(fā)時(shí)的正確調(diào)度,并不能解決死鎖。注意:如果兩個(gè)事務(wù)都對(duì)同一數(shù)據(jù)有讀和寫,那么可以不加s 鎖,直接上 x 篇二:兩階段封鎖協(xié)議(轉(zhuǎn))兩階段封鎖協(xié)議2009-10-2314:04 一、兩段鎖協(xié)議的內(nèi)容 在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫操作之前,事務(wù)首先要獲得對(duì)該數(shù)據(jù)的封鎖 在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其他封鎖。 “兩段 ”鎖的含義 事
3、務(wù)分為兩個(gè)階段: 第一階段是獲得封鎖,也稱為擴(kuò)展階段; 第二階段是釋放封鎖,也稱為收縮階段。事務(wù) 1 的封鎖序列: slock 事務(wù) 2 的封鎖序列: slock 事務(wù) 1 遵守兩段鎖協(xié)議,而事務(wù)2 不遵守兩段協(xié)議。并行執(zhí)行的所有事務(wù)均遵守兩段鎖協(xié)議,則對(duì)這些事務(wù) 的所有并行調(diào)度策略都是可串 所有遵守兩段鎖協(xié)議的事務(wù),其并行執(zhí)行的結(jié)果一定是正確的。事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。可串行化的調(diào)度中,不一定所有事務(wù)都必須符合兩段鎖協(xié)議。二、兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段
4、鎖協(xié)議,但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖。三、兩段鎖協(xié)議與三級(jí)封鎖協(xié)議 兩類不同目的的協(xié)議兩段鎖協(xié)議:保證并發(fā)調(diào)度的正確性三級(jí)封鎖協(xié)議:在不同程度上保證數(shù)據(jù)一致性 遵守第三級(jí)封鎖協(xié)議必然遵守兩段協(xié)議 鎖通常具有3 個(gè)環(huán)節(jié):第一個(gè)環(huán)節(jié)是申請(qǐng)加鎖,即事務(wù)在操作前要對(duì)它將使用的數(shù)據(jù)提出加鎖申請(qǐng) ; 第二個(gè)環(huán)節(jié)是獲得 鎖,即當(dāng)條件成熟時(shí),系統(tǒng)答應(yīng)事務(wù)對(duì)數(shù)據(jù)進(jìn)行加鎖,從而 事務(wù)獲得數(shù)據(jù)的控制權(quán);第三個(gè)環(huán)節(jié)是釋放鎖,即完成操作 后事務(wù)放棄數(shù)據(jù)的控制權(quán)?;镜姆怄i類型有以下兩種: 排它鎖也稱為獨(dú)占鎖或?qū)戞i。一旦事務(wù) t 對(duì)數(shù)據(jù)對(duì)象a 加上排它
5、鎖,則只答應(yīng) t 讀取和修改a ,其他任何事務(wù)既不 能讀取和修改 a ,也不能再對(duì)釋放 a 上的鎖為止。共享鎖 s 共享鎖又稱讀鎖。假如事務(wù) 鎖,不能加x 鎖,直到事務(wù)t釋放a 鎖為止。在對(duì)數(shù)據(jù)進(jìn)行加鎖時(shí),另外需要約定并執(zhí)行一些規(guī)則和協(xié)議,其中包括何時(shí)申請(qǐng)鎖,保持鎖的時(shí)間以及何時(shí)釋放等,這些規(guī)則就稱為封鎖協(xié)議,其總共分為以下三級(jí): 一級(jí)封鎖協(xié)議。一級(jí)封鎖協(xié)議是事務(wù)t 在修改數(shù)據(jù)之前 必須先對(duì)其加 x 鎖,直到事務(wù)結(jié)束才釋放。二級(jí)封鎖協(xié)議。二級(jí)封鎖協(xié)議是事務(wù)t 對(duì)要修改數(shù)據(jù)必 鎖;對(duì)要讀取的數(shù)據(jù)必須先加 s 鎖,讀完后即可釋放s 三級(jí)封鎖協(xié)議。三級(jí)封鎖協(xié)議是事務(wù)t 在讀取數(shù)據(jù)之前必須先對(duì)其加 s
6、 鎖,在要修改數(shù)據(jù)之前必須先對(duì)其加 x 直到事務(wù)結(jié)束后才釋放所有鎖。執(zhí)行了封鎖協(xié)議之后,就可以克服數(shù)據(jù)庫(kù)操作中的數(shù)據(jù) HYPERLINK http:/ky/wl/200906251041221819.htm http:/ky/wl/200906251041221819.htm 篇三:并發(fā)控制 課后答案第八章 并發(fā)控制 習(xí)題解答和解析在數(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ī)制。
7、并發(fā)操作可能會(huì)產(chǎn)生哪幾類數(shù)據(jù)不一致?用什么方法能避免各種不一致的情況 ? 答:并發(fā)操作帶來的數(shù)據(jù)不 一致性包括三類:丟失修改、不可重復(fù)讀和讀臟數(shù)據(jù)。(1)丟失修改 (lost update) 兩個(gè)事務(wù) t1 t2 讀入同一 數(shù)據(jù)并修改,t2 提交的結(jié)果破壞了(覆蓋了)t1 提交的結(jié)果, 導(dǎo)致 t1 的修改被丟失。(2)不可重復(fù)讀(non -repeatable read) 不可重復(fù)讀是指事務(wù) t1 讀取數(shù)據(jù)后 ,事務(wù) t2 執(zhí)行更新操作 ,使 t1 無(wú)法再現(xiàn) 前一次讀取結(jié)果。不可重復(fù)讀包括三種情況:詳見概論 8.1(p266) 。(3)讀臟數(shù)據(jù) (dirty read) 讀臟數(shù)據(jù)是指事務(wù)t1
8、修改某 一數(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ù)?;镜姆怄i類型有幾種?試述它們的含義。答:基本的封鎖類型有兩種:排它鎖 (exclusive locks, 簡(jiǎn)稱 )和共享鎖 (sharelocks, 簡(jiǎn)稱 排它鎖又稱為寫鎖。若事務(wù)t 對(duì)數(shù)據(jù)對(duì)象a 加上 x 上的鎖。這就保證了其他事務(wù)在 t 釋放 上的鎖之前不能再讀取和修改a 。共享鎖又稱為讀鎖。若事務(wù) 但不能修改a,其他事務(wù)只能再對(duì)鎖,而不能加x鎖,直到t釋放a鎖。這就保證了其
9、他事務(wù)可以讀a,但在t釋放a鎖之前不能對(duì)a做任何 修改。. 如何用封 鎖機(jī)制保證數(shù)據(jù)的一致性 答: dbms 在對(duì)數(shù)據(jù)進(jìn)行讀、寫操作之前首先對(duì)該數(shù)據(jù)執(zhí)行封鎖操作,例如下圖中事務(wù)t1 在對(duì) a進(jìn)行修改之前先對(duì) 鎖。這樣 ,當(dāng) t2 請(qǐng)求對(duì) a 鎖時(shí)就被拒絕, t2 只能等待 t1 釋放 a 上的鎖后才能獲得對(duì)鎖,這時(shí)它讀到的 a 是 t1 更新后值進(jìn)行運(yùn)算。這樣就不會(huì)丟失t1 的更新。dbms 按照一定的封鎖協(xié)議,對(duì)并發(fā)操作進(jìn)行控制 ,使得 多個(gè)并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復(fù)讀和讀臟數(shù)據(jù)等數(shù)據(jù)不一致性。.什么是封鎖協(xié)議?不同級(jí)別的封鎖協(xié)議的主要區(qū)別是 什么 ? 答:在運(yùn)用封鎖技
10、術(shù)對(duì)數(shù)據(jù)加鎖時(shí),要約定一些規(guī)則。例 如,在運(yùn)用 鎖、何時(shí)釋放封鎖等。這些約定或者規(guī)則稱為封鎖協(xié)議 (locking protocol)對(duì)封鎖方式約定不同的規(guī)則 ,就形成了 各種不同的封鎖協(xié)議、不同級(jí)別的封鎖協(xié)議,例如概論 8.3 中介紹的三級(jí)封鎖協(xié)議 ,三級(jí)協(xié)議的主要區(qū)別在于什么操作 需要申請(qǐng)封鎖 , 何時(shí)申請(qǐng)封鎖以及何時(shí)釋放鎖(即持鎖時(shí)間的 長(zhǎng)短 ) 。一級(jí)封鎖協(xié)議:事務(wù)鎖 ,直到事務(wù)結(jié)束才釋放。二級(jí)封鎖協(xié)議:一級(jí)封鎖協(xié) 議加上事務(wù)鎖,讀完后即可釋放s 之前必須先對(duì)其加 s 鎖,直到事務(wù)結(jié)束才釋放。.不同封鎖協(xié)議與系統(tǒng)一致性級(jí)別的關(guān)系是什么 ? 答:不同的封鎖協(xié)議對(duì)應(yīng)不同的一致性級(jí)別。一級(jí)封
11、鎖協(xié)議可防止丟失修改 ,并保證事務(wù)是可恢復(fù)的。在一級(jí)封鎖協(xié)議中 ,對(duì)讀數(shù)據(jù)是不加 鎖的 ,所以它不能保證可重復(fù)讀和不讀臟數(shù)據(jù)。二級(jí)封鎖協(xié)議除防止了丟失修改 ,還可進(jìn)一步防止讀臟數(shù)據(jù)。在二級(jí)封鎖協(xié)議中 ,由于讀完數(shù)據(jù)后立即釋放 以它不能保證可重復(fù)讀。在三級(jí)封鎖協(xié)議中 ,無(wú)論是讀數(shù)據(jù)還是寫數(shù)據(jù)都加長(zhǎng)鎖, 即都要到事務(wù)結(jié)束 才釋放封鎖。所以三級(jí)封鎖協(xié)議除防止 了丟失修改和不讀臟數(shù)據(jù)外 ,還進(jìn)一步防止了不可重復(fù)讀。下面的表格清楚地說明了封鎖協(xié)議與系統(tǒng)一致性的關(guān) 8. 什么是活鎖 ?什么是死鎖 ?答:等待 unlock 等待 .等待等待 .等待等待 .等待等待 .等待 .等待 如果事務(wù) t1 封鎖了數(shù)據(jù)
12、r ,事務(wù) t2 飛又請(qǐng)求封鎖 于是 t2等待。 t3 也請(qǐng)求封鎖 r ,當(dāng) t1 釋放了 r 上的封鎖 之后系統(tǒng)首先批準(zhǔn)了 t3 的請(qǐng)求 ,t2 仍然等待。然后 t4 10 求封鎖 t3 釋放了 上的封鎖之后系統(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
13、 上的鎖。這樣就出現(xiàn)了 t1 在等待 t2, t2 又在等待 tl 的局面 ,t1 t2 兩個(gè)事務(wù)永遠(yuǎn)不能結(jié)束形成死鎖。等待等待等待等待9. 試述活鎖的產(chǎn)生原因和解決方法。答:活鎖產(chǎn)生的原因:當(dāng)一系列封鎖不能按照其先后順 序執(zhí)行時(shí) ,就可能導(dǎo)致一些事務(wù)無(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ù)獲得鎖。. 請(qǐng)給出預(yù)防死鎖的若干方法。答:在數(shù)據(jù)庫(kù)中,產(chǎn)生死鎖的原因是兩個(gè)或多個(gè)事務(wù)都已封鎖了一些數(shù)據(jù)對(duì)象,然后又都請(qǐng)求已被其他事務(wù)封鎖的數(shù)11 據(jù)加
14、鎖 ,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實(shí)就是要破壞產(chǎn)生死鎖的條件。預(yù)防 死鎖通常有兩種方法:(1)一次封鎖法,要求每個(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 。.請(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ī)定
15、的時(shí) 限,就認(rèn)為發(fā)生了死鎖。超時(shí)法實(shí)現(xiàn)簡(jiǎn)單,但有可能誤判死鎖, 事務(wù)因其他原因長(zhǎng)時(shí)間等待超過時(shí)限時(shí) ,系統(tǒng)會(huì)誤認(rèn)為發(fā)生了死鎖。若時(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ù)修改操作必須加以恢1212. 什么樣的并發(fā)調(diào)度是正確的調(diào)度 ? 答:可串行化 (sertalizable) 的調(diào)度是正確的調(diào)度??纱谢恼{(diào)度的定義:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的 , 當(dāng)且僅當(dāng)其結(jié)果與 按某一次序串行執(zhí)行它們時(shí)的結(jié)果相
16、同 , 稱這種調(diào)度策略為可串行化的調(diào)度。13.設(shè) t1,t2,t3 是如下的 3 個(gè)事務(wù): t1:a:=a+2; 個(gè)事務(wù)允許并行執(zhí)行,則有多少可能的正確結(jié)果,請(qǐng)一一列舉出來。的最終結(jié)果可能有2、 4、 8、 16。因?yàn)榇袌?zhí)行次序有t1 t2 t3 、 t1t3 t2 、 t2 t1 t3 、 t2 t3 t1 、 t3 t1 t2 、 t3 t2 t1 。對(duì)應(yīng)的執(zhí)行結(jié)果是16、 8、 13 等待 寫回等待 等待 slock 等待寫回等待 unlock 寫回 a(=16) unlock 最后結(jié)果 a 為 16,是可串行化的調(diào)度。(3)請(qǐng)給出一個(gè)非串行化的調(diào)度,并給出執(zhí)行結(jié)果。等待 a=y+2
17、寫回等待 unlock 14xlock 等待 a=y*2 寫回 unlock 個(gè)事務(wù)都遵守兩段鎖協(xié)議,請(qǐng)給出一個(gè)不產(chǎn)生死鎖的可串行化調(diào)度。答: slock 寫回等待等待【篇二:三級(jí)封鎖協(xié)議例子】三級(jí)封鎖協(xié)議,例子發(fā)布時(shí)間:2017-02-04 來源 : 點(diǎn)擊:篇一:數(shù)據(jù)庫(kù)中的封鎖協(xié)議并發(fā)產(chǎn)生的數(shù)據(jù)不一致有:丟失修改,讀臟數(shù)據(jù),不可重復(fù)讀兩種鎖: s 鎖(共享鎖,讀鎖), x 鎖(排它鎖,寫鎖)加 s 鎖后,本事務(wù)就只能讀取數(shù)據(jù)而不能修改。其他事務(wù)可以加 s鎖來讀取數(shù)據(jù),但不能加 x 鎖修改數(shù)據(jù)。即:只要數(shù)據(jù)上有s 鎖,任何事務(wù)都只能再對(duì)其加 s 鎖讀取,而不能加 x 鎖修改。加 x 鎖后,本事
18、務(wù)可以讀取和修改數(shù)據(jù)。其他事務(wù)不能加任何鎖,從而也不能讀取和修改數(shù)據(jù)。封鎖協(xié)議有:三級(jí)封鎖協(xié)議以及兩段鎖協(xié)議一級(jí)封鎖協(xié)議:寫數(shù)據(jù)前加 x 鎖,事務(wù)結(jié)束釋放x 鎖。解決丟失修改問題。二級(jí)封鎖協(xié)議:一級(jí)之上,讀數(shù)據(jù)前加 s 鎖,讀完釋放s 鎖。一級(jí)之上解決讀臟數(shù)據(jù)問題。三級(jí)封鎖協(xié)議:二級(jí)之上,事務(wù)結(jié)束才釋放s 鎖。二級(jí)之上解決不可重復(fù)讀問題。兩段鎖協(xié)議( 2pl ):讀數(shù)據(jù)前加s 鎖,寫數(shù)據(jù)前加x 鎖,事務(wù)結(jié)束時(shí)才釋放。當(dāng)要修改數(shù)據(jù)時(shí),事務(wù)應(yīng)對(duì)已加的 s 鎖升級(jí)為 x 鎖。事務(wù)釋放一個(gè)封鎖后,不再申請(qǐng)其它任何封鎖。即 一個(gè) 事務(wù)如果對(duì)不同數(shù)據(jù)加鎖,解鎖都是放到后面一塊兒進(jìn)行的。注意,以前一直弄錯(cuò),
19、這兒是一個(gè)事務(wù),如果是并發(fā)事務(wù), a 事務(wù)的解鎖可以放到 b事務(wù)之前。兩段鎖協(xié)議解決的是事務(wù)并發(fā)時(shí)的正確調(diào)度,并不能解決死鎖。注意:如果兩個(gè)事務(wù)都對(duì)同一數(shù)據(jù)有讀和寫,那么可以不加 s 鎖,直接上 x 鎖。篇二:兩階段封鎖協(xié)議(轉(zhuǎn))兩階段封鎖協(xié)議2009-10-23 14:04一、兩段鎖協(xié)議的內(nèi)容在對(duì)任何數(shù)據(jù)進(jìn)行讀、寫操作之前,事務(wù)首先要獲得對(duì)該數(shù)據(jù)的封鎖在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其他封鎖。“兩段 ” 鎖的含義事務(wù)分為兩個(gè)階段:第一階段是獲得封鎖,也稱為擴(kuò)展階段;第二階段是釋放封鎖,也稱為收縮階段。例:事務(wù) 1 的封鎖序列:slock a . slock b . xlock c . u
20、nlock b . unlock a . unlock c事務(wù)2 的封鎖序列:slock a . unlock a . slock b . xlock c . unlock c . unlock b事務(wù)1 遵守兩段鎖協(xié)議,而事務(wù)2 不遵守兩段協(xié)議。并行執(zhí)行的所有事務(wù)均遵守兩段鎖協(xié)議,則對(duì)這些事務(wù)的所有并行調(diào)度策略都是可串行化的。所有遵守兩段鎖協(xié)議的事務(wù),其并行執(zhí)行的結(jié)果一定是正確的。事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。可串行化的調(diào)度中,不一定所有事務(wù)都必須符合兩段鎖協(xié)議。二、兩段鎖協(xié)議與防止死鎖的一次封鎖法一次封鎖法要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就
21、不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議,但是兩段鎖協(xié)議并不要求事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務(wù)可能發(fā)生死鎖。三、兩段鎖協(xié)議與三級(jí)封鎖協(xié)議兩類不同目的的協(xié)議兩段鎖協(xié)議:保證并發(fā)調(diào)度的正確性三級(jí)封鎖協(xié)議:在不同程度上保證數(shù)據(jù)一致性遵守第三級(jí)封鎖協(xié)議必然遵守兩段協(xié)議轉(zhuǎn)自:)相關(guān)概念轉(zhuǎn)自的: 封鎖通常具有3 個(gè)環(huán)節(jié):第一個(gè)環(huán)節(jié)是申請(qǐng)加鎖,即事務(wù)在操作前要對(duì)它將使用的數(shù)據(jù)提出加鎖申請(qǐng);第二個(gè)環(huán)節(jié)是獲得鎖,即當(dāng)條件成熟時(shí),系統(tǒng)答應(yīng)事務(wù)對(duì)數(shù)據(jù)進(jìn)行加鎖,從而事務(wù)獲得數(shù)據(jù)的控制權(quán);第三個(gè)環(huán)節(jié)是釋放鎖,即完成操作后事務(wù)放棄數(shù)據(jù)的控制權(quán)?;镜姆怄i類型有以下兩種:排它鎖 x排它鎖
22、也稱為獨(dú)占鎖或?qū)戞i。一旦事務(wù)t 對(duì)數(shù)據(jù)對(duì)象a 加上排它鎖,則只答應(yīng) t 讀取和修改 a ,其他任何事務(wù)既不能讀取和修改a ,也不能再對(duì)a 加任何類型的鎖,直到 t 釋放 a 上的鎖為止。共享鎖s共享鎖又稱讀鎖。假如事務(wù)t 對(duì)數(shù)據(jù)對(duì)象a 加上共享鎖,其他事務(wù)只能再對(duì) a 加 s 鎖,不能加x 鎖,直到事務(wù)t 釋放 a 上的 s 鎖為止。在對(duì)數(shù)據(jù)進(jìn)行加鎖時(shí),另外需要約定并執(zhí)行一些規(guī)則和協(xié)議,其中包括何時(shí)申請(qǐng)鎖,保持鎖的時(shí)間以及何時(shí)釋放等,這些規(guī)則就稱為封鎖協(xié)議,其總共分為以下三級(jí):一級(jí)封鎖協(xié)議。一級(jí)封鎖協(xié)議是事務(wù)t 在修改數(shù)據(jù)之前必須先對(duì)其加x 鎖,直到事務(wù)結(jié)束才釋放。二級(jí)封鎖協(xié)議。二級(jí)封鎖協(xié)議是
23、事務(wù)t 對(duì)要修改數(shù)據(jù)必須先加x 鎖,直到事務(wù)結(jié)束才釋放x 鎖;對(duì)要讀取的數(shù)據(jù)必須先加 s 鎖,讀完后即可釋放 s 鎖。三級(jí)封鎖協(xié)議。三級(jí)封鎖協(xié)議是事務(wù)t 在讀取數(shù)據(jù)之前必須先對(duì)其加s 鎖,在要修改數(shù)據(jù)之前必須先對(duì)其加 x 鎖,直到事務(wù)結(jié)束后才釋放所有鎖。執(zhí)行了封鎖協(xié)議之后,就可以克服數(shù)據(jù)庫(kù)操作中的數(shù)據(jù)不一致所引起的問題。不加鎖的并發(fā)控制 HYPERLINK http:/ky/wl/200906251041221819.htm http:/ky/wl/200906251041221819.htm篇三:并發(fā)控制 課后答案第八章 并發(fā)控制習(xí)題解答和解析1. 在數(shù)據(jù)庫(kù)中為什么要并發(fā)控制 ?答:數(shù)據(jù)庫(kù)是
24、共享資源,通常有許多個(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. 并發(fā)操作可能會(huì)產(chǎn)生哪幾類數(shù)據(jù)不一致?用什么方法能避免各種不一致的情況? 答:并發(fā)操作帶來的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀臟 數(shù)據(jù)。(1)丟失修改 (lost update) 兩個(gè)事務(wù) t1 和 t2 讀入同一數(shù)據(jù)并修改 ,t2提交的結(jié)果破壞了 (覆蓋了 )t1 提交的結(jié)果,導(dǎo)致 t1 的修改被丟失。(2)不可重復(fù)讀(non -repeatable re
25、ad) 不可重復(fù)讀是指事務(wù)t1 讀取數(shù)據(jù)后 ,事務(wù) t2 執(zhí)行更新操作 ,使 t1 無(wú)法再現(xiàn)前一次讀取結(jié)果。不可重復(fù)讀包括三種情況: 詳見概論8.1(p266) 。(3)讀 臟 數(shù)據(jù) (dirty read) 讀 臟 數(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. 什
26、么是封鎖 ?答:封鎖就是事務(wù)t 在對(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. 基本的封鎖類型有幾種?試述它們的含義。答:基本的封鎖類型有兩種:排它鎖 (exclusive locks, 簡(jiǎn)稱 x 鎖 )和共享鎖 (share locks, 簡(jiǎn)稱 s 鎖)。排它鎖又稱為寫鎖。若事務(wù)t 對(duì)數(shù)據(jù)對(duì)象a 加上 x 鎖,則只允許t 讀取和修改a,其他任何事務(wù)都不能再對(duì)a加任何類型的鎖,直到t釋放a 上的鎖。這就保證了其他事務(wù)在t 釋放
27、 a 上的鎖之前不能再讀取和修改 a 。共享鎖又稱為讀鎖。若事務(wù)t 對(duì)數(shù)據(jù)對(duì)象a 加上 s 鎖,則事務(wù) t 可以讀a但不能修改a,其他事務(wù)只能再對(duì)a加s鎖,而不能加x鎖,直到t釋放 a 上的 s 鎖。這就保證了其他事務(wù)可以讀a, 但在 t 釋放 a 上的 s鎖之前不能對(duì)a 做任何修改。如何用封鎖機(jī)制保證數(shù)據(jù)的一致性 ?答: dbms 在對(duì)數(shù)據(jù)進(jìn)行讀、寫操作之前首先對(duì)該數(shù)據(jù)執(zhí)行封鎖操作例如下圖中事務(wù)t1 在對(duì) a 進(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
28、鎖,這時(shí)它讀到的 a 是 t1 更新后的值 ,再按此新的 a 值進(jìn)行運(yùn)算。這樣就不會(huì)丟失t1 的更新。dbms 按照一定的封鎖協(xié)議,對(duì)并發(fā)操作進(jìn)行控制 ,使得多個(gè)并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復(fù)讀和讀臟 數(shù)據(jù)等數(shù)據(jù)不一致性。什么是封鎖協(xié)議?不同級(jí)別的封鎖協(xié)議的主要區(qū)別是什么 ?答:在運(yùn)用封鎖技術(shù)對(duì)數(shù)據(jù)加鎖時(shí) ,要約定一些規(guī)則。例如 ,在運(yùn)用 x鎖和 s 鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí) ,要約定何時(shí)申請(qǐng)x 鎖或 s 鎖、何時(shí)釋放封鎖等。這些約定或者規(guī)則稱為封鎖協(xié)議 (locking protocol) 。對(duì)封鎖方式約定不同的規(guī)則 ,就形成了各種不同的封鎖協(xié)議、不同級(jí)別的封鎖協(xié)議,例如概論8.
29、3 中介紹的三級(jí)封鎖協(xié)議 ,三級(jí)協(xié)議的主要區(qū)別在于什么操作需要申請(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é)束才釋放。不同封鎖協(xié)議與系統(tǒng)一致性級(jí)別的關(guān)系是什么 ?答:不同的封鎖協(xié)議對(duì)應(yīng)不同的一致性級(jí)別。一級(jí)封鎖協(xié)議可防止丟失修改 ,并保證事務(wù)t 是可恢復(fù)的。在一級(jí)封鎖協(xié)議中,對(duì)讀數(shù)據(jù)是不加s 鎖的,所以它不能
30、保證可重復(fù)讀和不讀臟數(shù)據(jù)。二級(jí)封鎖協(xié)議除防止了丟失修改 ,還可進(jìn)一步防止讀臟 數(shù)據(jù)。在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后立即釋放s 鎖 ,所以它不能保證可重復(fù)讀。在三級(jí)封鎖協(xié)議中 , 無(wú)論是讀數(shù)據(jù)還是寫數(shù)據(jù)都加長(zhǎng)鎖,即都要到事務(wù)結(jié)束 才釋放封鎖。所以三級(jí)封鎖協(xié)議除防止了丟失修改和不讀臟數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀。下面的表格清楚地說明了封鎖協(xié)議與系統(tǒng)一致性的關(guān)系。什么是活鎖 ?什么是死鎖 ?答:等待 unlock 等待 .等待等待. 等待等待. 等待等待. 等待 . 等待如果事務(wù) t1 封鎖了數(shù)據(jù)r ,事務(wù)t2 飛又請(qǐng)求封鎖 r, 于是 t2 等待。 t3也請(qǐng)求封鎖 r ,當(dāng) t1 釋放了 r
31、 上的封鎖之后系統(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)等待,這就是活鎖的情形。活鎖的含義是該等待事務(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 兩
32、個(gè)事務(wù)永遠(yuǎn)不能結(jié)束 ,形成死鎖。維任維任維任維任等待等待等待等待試述活鎖的產(chǎn)生原因和解決方法。答:活鎖產(chǎn)生的原因:當(dāng)一系列封鎖不能按照其先后順序執(zhí)行時(shí) ,就可能導(dǎo)致一些事務(wù)無(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ù)獲得鎖。請(qǐng)給出預(yù)防死鎖的若干方法。答:在數(shù)據(jù)庫(kù)中,產(chǎn)生死鎖的原因是兩個(gè)或多個(gè)事務(wù)都已封鎖了一些數(shù)據(jù)對(duì)象 ,然后又都請(qǐng)求已被其他事務(wù)封鎖的數(shù)據(jù)加鎖 ,從而出現(xiàn)死等待。防止死鎖的發(fā)生其實(shí)就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩
33、種方法:(1)一次封鎖法,要求每個(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 。請(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ā)生了死鎖。若時(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ù)。什么樣的并發(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)度。設(shè) t1,t2
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保育員填空題題目及答案
- 苗疆蠱術(shù)考試題目及答案
- 面試題關(guān)于改革的題目及答案
- 養(yǎng)老院老人生活照顧制度
- icd 10理論考試題目及答案
- 養(yǎng)老院老人緊急救援人員培訓(xùn)制度
- 養(yǎng)老院老人健康監(jiān)測(cè)服務(wù)質(zhì)量管理制度
- 養(yǎng)老院環(huán)境保護(hù)管理制度
- 辦公室員工保密承諾制度
- 鐵路施工三會(huì)制度
- 單杠引體向上教學(xué)課件
- 高級(jí)消防設(shè)施操作員試題及答案-1
- 2025年海南省政府采購(gòu)評(píng)審專家考試題庫(kù)(含答案)
- 綿陽(yáng)普通話考試題目含答案
- 國(guó)企財(cái)務(wù)審批管理辦法
- 新型農(nóng)業(yè)經(jīng)營(yíng)主體法律制度完善研究
- 高中國(guó)際班數(shù)學(xué)試卷
- 北京市2019-2024年中考滿分作文131篇
- 2024-2025學(xué)年湖北省武漢市常青聯(lián)合體高二上學(xué)期期末考試語(yǔ)文試題(解析版)
- xx中學(xué)十五五發(fā)展規(guī)劃(2025-2030)
- 快遞保證金合同協(xié)議
評(píng)論
0/150
提交評(píng)論