版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、數(shù)據(jù)庫原理,第十一章 數(shù)據(jù)庫并發(fā)控制,數(shù)據(jù)庫是可以共享的資源,即供多個用戶使用。允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)稱為多用戶數(shù)據(jù)庫系統(tǒng)。為了充分利用系統(tǒng)資源,如CPU,內(nèi)存等,應該允許多個事務并發(fā)執(zhí)行。 事務并發(fā)執(zhí)行分為兩種:交叉并發(fā)方式:并行事務的并行操作輪流交叉進行,如單處理機系統(tǒng)中的并行事務同時并發(fā)方式:在多處理機系統(tǒng)中,可以同時運行多個事務,實現(xiàn)多個事務真正的并行運行,11.1 并發(fā)控制概述,并發(fā)
2、操作可能帶來數(shù)據(jù)的不一致性,包括三種情況: 丟失修改 不可重復讀:修改,刪除,插入 讀“臟”數(shù)據(jù) 產(chǎn)生以上不一致性的主要原因是并發(fā)操作破壞了事務的隔離性,并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,使事務的執(zhí)行不會相互干擾。但有時對數(shù)據(jù)庫允許某些不一致性,如有些統(tǒng)計工作涉及數(shù)據(jù)量很大,這時讀一些不正確的數(shù)據(jù)對統(tǒng)計精度影響不大,這時可以降低一致性的要求以減少系統(tǒng)開銷。 為了解決以上問題,主要采用
3、的技術(shù)是給數(shù)據(jù)加鎖。,11.2 封鎖,一 定義: 封鎖就是對事務T在對某個數(shù)據(jù)對象例如表,記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務就對該數(shù)據(jù)對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數(shù)據(jù)對象。二 類型: 排它鎖(X鎖):又稱為寫鎖。如果事務T對數(shù)據(jù)對象 加上X鎖,則只允許T讀取和修改A,其它任何事務都不能,再對A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其它事
4、務在T釋放A上的鎖之前不能再讀取和修改A。 共享鎖(S鎖):又稱讀鎖。若事務T對數(shù)據(jù)對象A加上S鎖,則事務T可以讀取A但不能修改A,其它事務只能對A加S鎖而不能加X鎖,直到T釋放A上的S鎖。這就保證了其它事務可以讀A,但在T釋放A上的S鎖之前不能修改A。,11.3 封鎖協(xié)議,一 定義 對數(shù)據(jù)加鎖時約定的一些規(guī)則稱為封鎖協(xié)議。二 分類 一級封鎖協(xié)議:事務T在修改數(shù)據(jù)R之前必須對其加X鎖,直到事務結(jié)束(包括
5、COMMIT和ROLLBACK)才釋放。 一級封鎖協(xié)議可以解決丟失修改。,二級封鎖協(xié)議:一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后可立即釋放S鎖。 二級封鎖協(xié)議不僅可以解決丟失修改,還可以解決讀“臟數(shù)據(jù)”問題。 三級封鎖協(xié)議:一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務結(jié)束才釋放。 三級封鎖協(xié)議不僅可以解決丟失修改和讀“臟數(shù)據(jù)”問題,還可
6、以防止不可重復讀。,11.4 活鎖和死鎖,一 活鎖 如果事務T1封鎖了數(shù)據(jù)R,接著事務T2也請求封鎖R,那么T2只能等待。接著T3也請求封鎖R,當T1釋放了R上的鎖之后系統(tǒng)首先批準了T3的請求,T2只能再次等待。然后T4也請求封鎖R,當T3釋放了R上的鎖之后系統(tǒng)又批準了T4的請求,T2仍然等待。這樣T2有可能永遠等待而無法獲得對R加鎖的權(quán)利,這就是活鎖的情況。 解決活鎖的簡單辦法就是“先來先服務
7、”。,二 死鎖 如果事務T1封鎖了數(shù)據(jù)R1, T2封鎖了數(shù)據(jù)R2。然后T1又請求封鎖R2,但此時R2已被封鎖,于是T1等待T2釋放R2上的鎖。接著T2請求封鎖R1,但此時R1已被封鎖,于是T2等待T1釋放R1上的鎖。這樣就出現(xiàn)了T1等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不可能結(jié)束,形成死鎖。 死鎖的解決辦法有兩種:1. 預防一次封鎖法:要求每個事務必須一次
8、將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)下去。 存在的問題:一次將以后要用到的數(shù)據(jù)全部加鎖,擴大了封鎖的范圍,從而降低了系統(tǒng)的并發(fā)度。,數(shù)據(jù)庫中的數(shù)據(jù)是不斷變化的,很難精確地判斷每個事務所要封鎖的數(shù)據(jù)對象,為此只能加大封鎖范圍,將事務在執(zhí)行中可能要封鎖的對象都加上鎖,這就進一步降低了并發(fā)度。順序封鎖法:預先對數(shù)據(jù)對象規(guī)定一個封鎖順序,所有事務都按這個順序進行封鎖。 存在的問題:數(shù)據(jù)庫系統(tǒng)
9、的數(shù)據(jù)對象很多且不斷變化,要維護一個特定的封鎖順序很困難。 很難預先確定某個事務要封鎖哪些對象,因此也就很難按規(guī)定的順序進行封鎖了。 在數(shù)據(jù)庫中預防這種方法用得并不多。,2. 診斷與解除 超時法 如果一個事務的等待時間超過了規(guī)定的時間,就認為發(fā)生了死鎖。 存在的問題:如果事務因為其它原因使等待時間超時,系統(tǒng)會誤以為發(fā)生了死鎖;如果時限設置的過長,死鎖發(fā)生后
10、不能及時發(fā)現(xiàn)。 等待圖法 數(shù)據(jù)庫管理系統(tǒng)一旦檢測到死鎖,就會選擇一個處理代價最小的事務,將其撤銷,并釋放此事務所有的鎖,使其它事務繼續(xù)運行下去。最后還要恢復這個被撤銷事務對數(shù)據(jù)庫所做的修改。,11.5 并發(fā)事務的可串行性,定義:多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與某一次序串行執(zhí)行它們時的結(jié)果相同,把這種調(diào)度策略稱為可串行化的調(diào)度。 可串行性是并發(fā)事務正確性的準則。一個給定的并發(fā)調(diào)
11、度,當且僅當它是可串行化的,才認為是正確調(diào)度。,11.6 兩段鎖協(xié)議,在對任何數(shù)據(jù)進行讀寫操作之前,首先要申請并獲得封鎖 在釋放一個封鎖之后,事務不再申請和獲得任何其它封鎖 如果并發(fā)事務都遵守兩段鎖協(xié)議,則這些事務的任何調(diào)度都是可串行化的,即兩段鎖協(xié)議是可串行化的充分條件,但非必要條件。,11.7 封鎖的粒度,封鎖對象的大小稱為封鎖粒度。封鎖粒度可以是邏輯單元:屬性值、屬性值的集合、元組、關(guān)系、整個數(shù)
12、據(jù)庫等;也可以是物理單元:頁、塊等。 封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷緊密相關(guān)。封鎖的粒度越大,所能封鎖的單元就越少,并發(fā)度就越小,開銷就越??;反之,粒度越小,并發(fā)度較高,開銷也較大。 一個數(shù)據(jù)庫系統(tǒng)中應該能夠支持多種封鎖粒度以供用戶選擇。這種封鎖方法稱為多粒度封鎖。 對于封鎖粒度的選擇:要綜合考慮開銷和并發(fā)度。,11.7.1 多粒度封鎖,多粒度樹:根結(jié)點是整個數(shù)據(jù)庫,葉
13、結(jié)點是最小的數(shù)據(jù)粒度 顯式封鎖:應事務的要求直接加到數(shù)據(jù)對象上的鎖 隱式封鎖:該數(shù)據(jù)對象沒有獨立加鎖,是由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加鎖 對某個數(shù)據(jù)對象加鎖,系統(tǒng)要檢查:1. 該數(shù)據(jù)對象上有無顯式封鎖與之沖突。2. 其上級結(jié)點給這個數(shù)據(jù)對象帶來的隱式封鎖與之有無沖突。3. 它給其下級結(jié)點帶來的隱式封鎖與這個結(jié)點的顯式封,鎖有無沖突。,11.7.2 意向鎖,意向鎖的含義是:如果對一個結(jié)點加意向
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫原理
- 《數(shù)據(jù)庫原理》教案
- 數(shù)據(jù)庫課程設計--數(shù)據(jù)庫系統(tǒng)原理
- 數(shù)據(jù)庫原理習題l
- 數(shù)據(jù)庫原理有答案
- 數(shù)據(jù)庫原理 課程教案
- 數(shù)據(jù)庫原理試題集
- 數(shù)據(jù)庫原理及應用
- 數(shù)據(jù)庫原理各章習題
- 數(shù)據(jù)庫原理試卷a答案
- 數(shù)據(jù)庫原理例題文檔
- 數(shù)據(jù)庫原理試題匯總
- 數(shù)據(jù)庫原理與應用a實驗管理-數(shù)據(jù)庫安全管理
- 數(shù)據(jù)庫原理在線作業(yè)
- 數(shù)據(jù)庫原理與應用a實驗管理-數(shù)據(jù)庫安全管理
- 數(shù)據(jù)庫原理課程設計---教室管理系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫原理畢業(yè)論文
- 數(shù)據(jù)庫系統(tǒng)原理題庫
- 數(shù)據(jù)庫原理課后題答案
- 《數(shù)據(jù)庫原理》教學大綱
評論
0/150
提交評論