




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
6.3并發(fā)控制第六章要點(diǎn)并發(fā)操作及影響并發(fā)操作的可串行性并發(fā)控制及實(shí)現(xiàn)技術(shù)序言事務(wù)并行地運(yùn)行可充分利用系統(tǒng)資源,事務(wù)是并發(fā)控制的基本單位多用戶數(shù)據(jù)庫系統(tǒng)中允許多個(gè)用戶同時(shí)使用數(shù)據(jù)庫,即在同一時(shí)刻可能有多個(gè)事務(wù)并行運(yùn)行同時(shí)并行方式單處理機(jī)系統(tǒng)中,事務(wù)并行實(shí)際上是這些事務(wù)的并行操作輪流交叉運(yùn)行交叉并行方式并發(fā)控制機(jī)制的提出當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)庫時(shí)可能出現(xiàn)多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況,并發(fā)控制機(jī)制將對這些并發(fā)操作加以控制以保證每個(gè)事務(wù)的ACID特性,確保數(shù)據(jù)庫的一致性并發(fā)控制機(jī)制是衡量某DBMS系統(tǒng)性能的指標(biāo)之一6.3.1并發(fā)控制概述這種數(shù)據(jù)庫的不一致是由并發(fā)操作引起的機(jī)票數(shù)量AA=16讀讀A=A-1A=A-1A=15A=15售票點(diǎn)售票點(diǎn)A=16A=16出售1出售1事務(wù)T1事務(wù)T2并發(fā)操作引起的丟失修改并發(fā)操作引起的數(shù)據(jù)不一致性包括三類丟失修改不可重復(fù)讀讀臟數(shù)據(jù)丟失修改事務(wù)T1對數(shù)據(jù)的修改被事務(wù)T2的修改覆蓋T1讀A=16A=A-1寫回A=15T2讀A=16A=A-1寫回A=15并發(fā)操作引起的不可重復(fù)讀不可重復(fù)讀事務(wù)T1讀取某一數(shù)據(jù)后,事務(wù)T2對其做了修改,當(dāng)T1按同樣條件再讀時(shí)得到不同的值事務(wù)T1讀取某些數(shù)據(jù)后,事務(wù)T2刪除(或插入)了一些記錄,當(dāng)T1按同樣條件再讀時(shí)發(fā)現(xiàn)少(或多)了一些記錄T1讀A=1,B=2求A+B=3讀A=1,B=4求A+B=5T2讀B=2B=B*2寫回B=4并發(fā)操作引起的讀臟數(shù)據(jù)讀臟數(shù)據(jù)事務(wù)T1修改了某數(shù)據(jù)并寫回磁盤,事務(wù)T2讀取了同一數(shù)據(jù)后,T1由于某種原因被撤銷,被修改的值復(fù)原,此時(shí)T2讀到的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)不一致T1讀C=1C=C*2寫回C=2ROLLBACKC恢復(fù)為1T2讀C=2小結(jié)產(chǎn)生上述三類不一致性的主要原因并發(fā)操作破壞了事務(wù)的隔離性,事務(wù)間相互干擾并發(fā)控制的主要技術(shù)封鎖技術(shù)(Locking)★時(shí)間戳技術(shù)(Timestamp)其他6.3.2封鎖概念事務(wù)T在對某個(gè)數(shù)據(jù)對象(如數(shù)據(jù)庫、表、記錄等)操作之前,首先向系統(tǒng)發(fā)出加鎖請求以便獲得對數(shù)據(jù)對象相應(yīng)的控制在事務(wù)T釋放它所獲得的鎖之前,其他事務(wù)不能更新此數(shù)據(jù)對象鎖的類型排它鎖(eXclusivelock):寫鎖若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務(wù)都不能再對A加任何類型的鎖,直到T釋放A上的鎖共享鎖(Sharelock):讀鎖若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖鎖的相容矩陣Y:相容的請求N:不相容的請求T2T1XS-XS-T2T1XS-XNNYSNYY-YYY6.3.3封鎖協(xié)議有了兩種基本封鎖,還需要什么約定?封鎖協(xié)議的概念何時(shí)申請加鎖、持鎖時(shí)間、何時(shí)釋放等規(guī)則不同的封鎖協(xié)議所達(dá)到的系統(tǒng)一致性不同三個(gè)級別的封鎖協(xié)議一級封鎖協(xié)議內(nèi)容:事務(wù)T在修改數(shù)據(jù)R之前必須先對其加X鎖,直至事務(wù)結(jié)束事務(wù)結(jié)束包括正常結(jié)束(COMMIT)和非正常結(jié)束(ROLLBACK)評價(jià):是否可解決丟失修改?可重復(fù)讀?讀臟數(shù)據(jù)?
可防止×不能保證×不能防止三個(gè)級別的封鎖協(xié)議二級封鎖協(xié)議內(nèi)容:讀數(shù)據(jù)前加S鎖,讀完即釋放寫數(shù)據(jù)前加X鎖直至事務(wù)結(jié)束評價(jià):是否可解決丟失修改?可重復(fù)讀?讀臟數(shù)據(jù)?
可防止×不能保證
可防止三個(gè)級別的封鎖協(xié)議三級封鎖協(xié)議內(nèi)容:讀數(shù)據(jù)前加S鎖直至事務(wù)結(jié)束寫數(shù)據(jù)前加X鎖直至事務(wù)結(jié)束評價(jià):是否可解決丟失修改?可重復(fù)讀?讀臟數(shù)據(jù)?
可防止
能保證
可保證小結(jié)
用封鎖協(xié)議解決問題用什么封鎖協(xié)議解決以下問題?丟失修改?讀臟數(shù)據(jù)?不能重復(fù)讀?一級封鎖二級封鎖三級封鎖T1T2T1T2T1T2XlockA獲得XlockA讀A=16A=A-1寫回A=15CommitUnlockAXlockA等待等待
獲得XlockA讀A=15CommitUnlockA等待等待A=A-1寫回A=14SlockASlockB讀A=50求和=150讀A=50CommitUnlockAXlockB等待等待
獲得XlockB讀B=100CommitUnlockB等待等待B=B*2寫回B=200讀B=100讀B=100求和=150UnlockB等待等待等待等待XlockC讀C=100C=C*2寫回C=200Rollback(C恢復(fù)為100)UnlockCSlockC等待等待
獲得SlockC讀C=100CommitUnlockC等待沒有丟失修改可重復(fù)讀不讀臟數(shù)據(jù)用封鎖機(jī)制解決三種數(shù)據(jù)不一致性的示例不同級別的封鎖協(xié)議X鎖S鎖一致性保證操作結(jié)束釋放事務(wù)結(jié)束釋放操作結(jié)束釋放事務(wù)結(jié)束釋放不丟失修改不讀臟數(shù)據(jù)可重復(fù)性一級二級三級6.3.4活鎖和死鎖問題活鎖舉例說明:事務(wù)T1封鎖某數(shù)據(jù)后,事務(wù)T2請求封鎖未獲得并等待,而T1釋放鎖后,事務(wù)T3請求封鎖并獲得,T3釋放鎖后,事務(wù)T4請求封鎖并獲得……T2可能永遠(yuǎn)等待解決辦法:采用先來先服務(wù)的策略死鎖問題死鎖舉例說明:事務(wù)T1和T2各自封鎖了數(shù)據(jù)R1和R2后,又各自請求封鎖R2和R1,因都無法獲得而等待對方釋放的現(xiàn)象解決的兩類方法預(yù)防死鎖允許發(fā)生死鎖,采用一定手段定期診斷并解除死鎖死鎖的預(yù)防一次封鎖法辦法:每個(gè)事務(wù)一次將所有要使用的數(shù)據(jù)全部加鎖存在問題?順序封鎖法辦法:預(yù)先規(guī)定數(shù)據(jù)對象的封鎖順序,所有事務(wù)均按此順序存在問題?在操作系統(tǒng)上廣為采用的預(yù)防死鎖的策略并不很適合數(shù)據(jù)庫的特點(diǎn)因此DBMS普遍采用診斷并解除死鎖的辦法死鎖的診斷與解決死鎖的診斷超時(shí)法辦法:等待時(shí)間超過規(guī)定的時(shí)限問題?等待圖法辦法:畫等待圖,發(fā)現(xiàn)回路死鎖的解決檢測到死鎖,選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),強(qiáng)行撤銷,使其它事務(wù)可以繼續(xù)下去恢復(fù)撤銷事務(wù)所執(zhí)行的數(shù)據(jù)修改操作6.3.5事務(wù)調(diào)度的可串行性引言DBMS需對多個(gè)并發(fā)事務(wù)進(jìn)行運(yùn)行調(diào)度能將所有事務(wù)串行起來的調(diào)度策略不會破壞數(shù)據(jù)庫的不一致性,故而總是正確的概念可串行化的調(diào)度:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們時(shí)的結(jié)果相同可串行性是并發(fā)事務(wù)操作是否正確的判別準(zhǔn)則事務(wù)調(diào)度的可串行性為了保證并發(fā)操作的正確性,DBMS的并發(fā)控制機(jī)制必須提供一定的手段來保證調(diào)度是可串行化的保證事務(wù)調(diào)度可串行性的策略事務(wù)排它式執(zhí)行(資源無法充分共享)兩段鎖(Two-PhaseLocking,2PL)協(xié)議其它,如時(shí)間戳(TimeStamp)方法等DBMS普通采用封鎖方法實(shí)現(xiàn)并發(fā)操作調(diào)度的可串行性★并發(fā)事務(wù)的不同調(diào)度策略T1T2T1T2T1T2SlockBY=B=2UnlockBXlockAA=Y+1寫回A(=3)UnlockAX=A=3UnlockA寫回B(=4)UnlockBSlockAXlockBB=X+1a串行調(diào)度c不可串行化的調(diào)度SlockBY=B=2UnlockBXlockAA=Y+1寫回A(=3)UnlockAX=A=2UnlockA寫回B(=3)UnlockBSlockAXlockBB=X+1SlockBY=B=2UnlockBXlockAA=Y+1寫回A(=3)UnlockASlockAX=A=3UnlockA寫回B(=4)UnlockBXlockBB=X+1等待等待等待T1T2SlockBY=B=3UnlockBXlockAA=Y+1寫回A(=4)UnlockAX=A=2UnlockA寫回B(=3)UnlockBSlockAXlockBB=X+1d可串行化的調(diào)度T1:讀B;A=B+1;寫回A;T2:讀A;B=A+1;寫回B;A,B初值均為2b串行調(diào)度A=3;B=4A=4;B=3A=3;B=3A=3;B=46.3.6兩段鎖協(xié)議概念:事務(wù)對數(shù)據(jù)項(xiàng)的加鎖和解鎖分為兩個(gè)階段完成獲得封鎖:在對數(shù)據(jù)讀寫之前首先申請并獲得封鎖;釋放封鎖:在釋放一個(gè)封鎖后不再申請和獲得任何其他封鎖如遵守兩段鎖協(xié)議的事務(wù)SlockA…SlockB…XlockC...UnlockB…UnlockA…UnlockC如不遵守兩段鎖協(xié)議的事務(wù)SlockA…
UnlockA
…SlockB...XlockC…
UnlockC
…
UnlockB兩段鎖協(xié)議的性質(zhì)兩段鎖協(xié)議是可串行化調(diào)度的充分條件,但不是必要條件若并發(fā)事務(wù)都遵守兩段鎖協(xié)議,則對這些事務(wù)的任何并發(fā)調(diào)度策略都是可串行化的;若對并發(fā)事務(wù)的一個(gè)調(diào)度是可串行化的,不一定所有事務(wù)都符合兩段鎖協(xié)議兩段鎖協(xié)議可以保證并發(fā)事務(wù)的正確性,但可能發(fā)生死鎖T1T2T1T2T1T2SlockB讀B=2Y=BA=Y+1寫回A=3UnlockBUnlockASlockA等待等待讀A=3UnlockBUnlockA等待等待Y=A寫回B(=4)SlockB讀B=2Y=BXlockAA=Y+1SlockA等待等待讀A=3XlockBB=X+1等待等待X=AUnlockAUnlockB寫回A(=3)UnlockASlockB讀B=2XlockASlockA等待XlockB等待
可串行調(diào)度遵守兩段鎖協(xié)議可串行調(diào)度不遵守兩段鎖協(xié)議遵守兩段鎖協(xié)議的事務(wù)發(fā)生死鎖關(guān)于兩段鎖協(xié)議XlockA等待XlockBB=Y+1寫回B(=4)UnlockB讀A=2等待6.3.7封鎖的粒度封鎖的粒度即封鎖對象的大小,如邏輯單元:屬性、元組、關(guān)系、索引、數(shù)據(jù)庫等物理單元:頁、塊等封鎖粒度對并發(fā)控制的影響封鎖粒度越大,并發(fā)度越小,系統(tǒng)封鎖開銷越?。环怄i粒度越小,并發(fā)度越高,系統(tǒng)封鎖開銷越大;封鎖粒度修改屬性?修改關(guān)系?如何選擇封鎖粒度?6.3.7多粒度封鎖定義:一個(gè)系統(tǒng)中同時(shí)支持多種封鎖粒度供不同事務(wù)選擇的方法術(shù)語:結(jié)點(diǎn)、上層結(jié)點(diǎn)、后裔結(jié)點(diǎn)多粒度樹顯式封鎖(應(yīng)事務(wù)要求直接加鎖)隱式封鎖(由于上層結(jié)點(diǎn)加鎖而加鎖)數(shù)據(jù)庫關(guān)系R1關(guān)系Rn元組元組元組元組多粒度封鎖的問題操作辦法對某個(gè)數(shù)據(jù)對象加鎖,系統(tǒng)要檢查該對象上有無顯式封鎖與之沖突;還要檢查所有上級結(jié)點(diǎn),看本事務(wù)的顯式封鎖是否與該對象上的隱式封鎖沖突;還有檢查其所有下級結(jié)點(diǎn),看上面的顯式封鎖是否與本事務(wù)的隱式封鎖沖突問題:檢查效率低數(shù)據(jù)庫關(guān)系R1關(guān)系Rn元組元組元組元組6.3.8意向鎖概念:如果對以一個(gè)結(jié)點(diǎn)加意向鎖,則說明該結(jié)點(diǎn)的下層結(jié)點(diǎn)正在被加鎖;對任一結(jié)點(diǎn)加鎖時(shí),必須先對它的上層結(jié)點(diǎn)加意向鎖三種意向鎖意向共享鎖(IS)意向排它鎖(IX)共享意向排它鎖(SIX)=S+IX對
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化產(chǎn)業(yè)中涂層的耐磨損性能研究考核試卷
- 工業(yè)設(shè)計(jì)中的產(chǎn)品生命周期管理考核試卷
- 信托公司業(yè)務(wù)流程標(biāo)準(zhǔn)化考核試卷
- 兔飼養(yǎng)繁殖技術(shù)的優(yōu)化考核試卷
- 新能源汽車充電設(shè)施規(guī)劃與布局優(yōu)化考核試卷
- 收購公司的合同范本
- 營業(yè)執(zhí)照合同范本
- 定制柜定金合同范本
- 木材板材加工合同范本
- 紗窗廠用工合同范本
- 北京市東城區(qū)2025年公開招考539名社區(qū)工作者高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025福建福州地鐵集團(tuán)限公司運(yùn)營分公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025至2030年中國電子護(hù)眼臺燈數(shù)據(jù)監(jiān)測研究報(bào)告
- 兒童睡眠障礙治療
- 2025年浙江省溫州樂清市融媒體中心招聘4人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025夏季廣東廣州期貨交易所招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 北京市豐臺區(qū)2024-2025學(xué)年高三上學(xué)期期末英語試題
- 2025上海市嘉定工業(yè)區(qū)農(nóng)村青年干部招聘22人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《獸醫(yī)基礎(chǔ)》練習(xí)題及參考答案
- 2025年煤礦探放水證考試題庫
- 2024年度個(gè)人珠寶首飾分期購買合同范本3篇
評論
0/150
提交評論