《并發(fā)控制》教學課件_第1頁
《并發(fā)控制》教學課件_第2頁
《并發(fā)控制》教學課件_第3頁
《并發(fā)控制》教學課件_第4頁
《并發(fā)控制》教學課件_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《并發(fā)控制》幻燈片本課件PPT僅供大家學習使用學習完請自行刪除,謝謝!本課件PPT僅供大家學習使用學習完請自行刪除,謝謝!《并發(fā)控制》幻燈片本課件PPT僅供大家學習使用主要內(nèi)容數(shù)據(jù)庫并發(fā)操作帶來的數(shù)據(jù)不一致問題鎖鎖協(xié)議封鎖帶來的問題:活鎖和死鎖并發(fā)操作的調(diào)度主要內(nèi)容數(shù)據(jù)庫并發(fā)操作帶來的數(shù)據(jù)不一致問題并發(fā)控制數(shù)據(jù)庫是一個可以供多個用戶共同使用的共享資源。串行訪問,每個時刻只能有一個用戶應用程序?qū)?shù)據(jù)庫進展存取,其它用戶程序必須等待。缺點:制約數(shù)據(jù)庫訪問效率的瓶頸,不利于數(shù)據(jù)庫資源的利用。并行訪問,通過并發(fā)控制機制允許多個用戶并發(fā)地訪問數(shù)據(jù)庫。并發(fā)控制數(shù)據(jù)庫是一個可以供多個用戶共同使用的共享資源。并發(fā)控制當多個用戶并發(fā)地訪問數(shù)據(jù)庫時就會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況。假設對并發(fā)操作不加以控制就會造成錯誤地存取數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。數(shù)據(jù)庫的并發(fā)控制機制是衡量數(shù)據(jù)庫管理系統(tǒng)性能的重要技術(shù)標志。并發(fā)控制當多個用戶并發(fā)地訪問數(shù)據(jù)庫時就會產(chǎn)生多個事務同時存取并發(fā)操作帶來的數(shù)據(jù)不一致問題例7.16在一個飛機訂票系統(tǒng)中,可能會出現(xiàn)的業(yè)務:〔1〕甲售票點讀航班X的機票余額數(shù)為A=25;〔2〕緊接著,乙售票點讀同一航班X的機票余額數(shù)A=25;〔3〕甲售票點賣出一張機票,然后修改機票余額數(shù)A=A-1為24,并把A寫回數(shù)據(jù)庫;〔4〕乙售票點也賣出一張機票,同樣接著修改機票余額數(shù)A=A-1為24,并把A寫回數(shù)據(jù)庫。設甲售票點對應于事務T1,乙售票點對應于事務T2,那么上述事務過程的描述如圖并發(fā)操作帶來的數(shù)據(jù)不一致問題例7.16在一個飛機訂票系統(tǒng)時間T1T2DB中的A值t025t1read(A)t2read(A)t3A:=A-1t4write(A)t524t6A:=A-1t7write(A)t824丟失修改〔1〕喪失修改時間T1T2DB中的A值t025t1read(A)t2rea時間T1T2DB中的A值t025t1read(A)t2read(A)t3A:=A-10t4write(A)t515讀過時數(shù)據(jù)〔2〕讀過時數(shù)據(jù)時間T1T2DB中的A值t025t1read(A)t2rea時間T1T2DB中的A值t025t1read(A)t2A:=A-10t3write(A)t4read(A)15t5ROLLBACKt625讀“臟”數(shù)據(jù)〔3〕讀“臟〞數(shù)據(jù)時間T1T2DB中的A值t025t1read(A)t2A:=DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題并發(fā)操作可能帶來的數(shù)據(jù)不一致性情況有三種〔1〕喪失修改〔2〕讀過時數(shù)據(jù)〔3〕讀“臟〞數(shù)據(jù)DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題并發(fā)操作可能帶來的數(shù)據(jù)不產(chǎn)生原因:

并發(fā)操作破壞了事務的隔離性并發(fā)控制就是要通過正確的調(diào)度方式,使一個用戶事務的執(zhí)行不受其它事務的干擾,從而避免造成數(shù)據(jù)的不一致性。DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題產(chǎn)生原因:并發(fā)控制就是要通過正確的調(diào)度方式,使一個用戶事務的定義鎖是防止存取同一資源的用戶之間出現(xiàn)不正確地修改數(shù)據(jù)或不正確地更改數(shù)據(jù)構(gòu)造的一種機制。根本的鎖方式有二種:排它鎖(ExclusiveLocks,簡記為X鎖)共享鎖(ShareLocks,簡記為S鎖)定義〔1〕排它鎖(X鎖)當某個事務T為修改某個數(shù)據(jù)項A且不允許其它事務修改該數(shù)據(jù)項,或不允許其它事務對該數(shù)據(jù)項加S鎖時,那么該事務可以對A加排它鎖,排它鎖又稱為寫鎖。本領務:讀A,修改A其它事務:在T釋放A上的X鎖之前不能讀A和修改A〔1〕排它鎖(X鎖)當某個事務T為修改某個數(shù)據(jù)項A且不允許其〔2〕共享鎖(S鎖)當某個事務T希望阻止其它事務修改正為它讀取的某個數(shù)據(jù)項A時,那么該事務可以對A加共享鎖,共享鎖又稱為讀鎖。本領務:讀A,不能修改A其它事務:加S鎖讀A,在T釋放A上S鎖之前不能修改A〔2〕共享鎖(S鎖)當某個事務T希望阻止其它事務修改正為它讀SX-S×X××S鎖和X鎖的共存相容矩陣SX-S×X××S鎖和X鎖的共存相容矩陣當一個事務T要對某個項加鎖時,還必須遵守某種規(guī)那么,比方在什么條件下可以申請S鎖或X鎖,持鎖時間如何確定、何時釋放鎖等。一般稱這些規(guī)那么為鎖協(xié)議〔LockingProtocol〕。對加鎖方式規(guī)定不同的規(guī)那么,就形成了不同的鎖協(xié)議。不正確的并發(fā)操作可能帶來的喪失修改、讀過時數(shù)據(jù)和讀“臟〞數(shù)據(jù)等不一致性問題,三級鎖協(xié)議在不同程度上可以解決這些問題。當一個事務T要對某個項加鎖時,還必須遵守某種規(guī)那么,比方在什〔1〕一級鎖協(xié)議事務T在修改數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加X鎖,在獲得了X加鎖后,直到該事務T完畢時才釋放所加的X鎖。如果未獲準加X鎖,那么該事務T進入等待狀態(tài),直到獲準X加鎖后該事務才繼續(xù)執(zhí)行?!?〕一級鎖協(xié)議事務T在修改數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項事務T要修改數(shù)據(jù)R:申請加X鎖?等待加X鎖YNT結(jié)束釋放X鎖〔1〕一級鎖協(xié)議本領務:讀R,修改R;用COMMIT和ROLLBACK釋放X鎖其它事務:在T完畢前不能讀R,也不能修改R作用:防止喪失修改事務T要修申請加X鎖?等待加X鎖YNT結(jié)束〔1〕一級鎖協(xié)議〔2〕二級鎖協(xié)議二級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如下規(guī)那么:事務T在讀數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加S鎖,在獲得了S加鎖后,讀完數(shù)據(jù)R后即可釋放所加的S鎖。如果未獲準加S鎖,那么該事務T進入等待狀態(tài),直到獲準S加鎖后該事務才繼續(xù)執(zhí)行?!?〕二級鎖協(xié)議二級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖讀數(shù)據(jù)YN釋放S鎖〔2〕二級鎖協(xié)議一級鎖協(xié)議+本領務:讀R,不能修改R;用UNLOCK釋放S鎖(不需等T完畢)其它事務:可加S鎖讀R,不能修改R作用:防止喪失修改,防止讀“臟〞數(shù)據(jù)事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖YN釋放S鎖〔2〕二〔3〕三級鎖協(xié)議三級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如下規(guī)那么:事務T在讀數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加S鎖,在獲得了S加鎖后,直到該事務T完畢時才釋放所加的S鎖。如果未獲準加S鎖,那么該事務T進入等待狀態(tài),直到獲準S加鎖后該事務才繼續(xù)執(zhí)行?!?〕三級鎖協(xié)議三級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖讀數(shù)據(jù)YNT結(jié)束釋放S鎖〔3〕三級鎖協(xié)議一級鎖協(xié)議+

本領務:讀R,不能修改R;用COMMIT和ROLLBACK釋放其它事務:可加S鎖讀R,不能修改R作用:防止喪失修改,防止讀“臟〞數(shù)據(jù),防止讀過時數(shù)據(jù)事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖YNT結(jié)束〔3〕三級如果事務T1封鎖了數(shù)據(jù)R,事務T2又請求封鎖R,于是T2等待,T3也請求封鎖R,當T1釋放了R上的封鎖之后,系統(tǒng)首先批準了T3的請求,T2仍然等待,然后T4又請求封鎖R,當T3釋放了R上的封鎖之后,系統(tǒng)又批準了T4的請求,T2繼續(xù)等待,……,如此下去,T2有可能永遠等待。這種可能存在某個事務永遠處于等待狀態(tài)、得不到封鎖的時機的現(xiàn)象,稱為活鎖。解決方法:先來者先執(zhí)行。如果事務T1封鎖了數(shù)據(jù)R,事務T2又請求封鎖R,于是T2等待T1T2①②④③〔2〕死鎖兩個或兩個以上的事務都處于等待狀態(tài),每個事務都在等待其中另一個事務解除封鎖,它才能繼續(xù)執(zhí)行下去,結(jié)果任何一個事務都無法繼續(xù)執(zhí)行,這種現(xiàn)象稱為死鎖。T1T2①②④③〔2〕死鎖兩個或兩個以上的事務都處于等待狀態(tài)〔3〕死鎖的預防〔OS〕①一次加鎖法要求每個事務必須對所有要使用的數(shù)據(jù)項一次性地全部加鎖,否那么就不能繼續(xù)執(zhí)行。缺點:擴大了鎖的范圍,降低了系統(tǒng)的并發(fā)度?!?〕死鎖的預防〔OS〕①一次加鎖法〔3〕死鎖的預防〔OS〕②順序加鎖法預先對數(shù)據(jù)項規(guī)定一個加鎖順序,所有事務都按這個順序進展加鎖。缺點:很難按規(guī)定的順序進展加鎖?!?〕死鎖的預防〔OS〕②順序加鎖法〔4〕死鎖的檢測與解除1〕超時法如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖。優(yōu)點:實現(xiàn)簡單缺點:有可能誤判死鎖假設時限設置的太長,可能出現(xiàn)死鎖發(fā)生后不能及時發(fā)現(xiàn)的情況?!?〕死鎖的檢測與解除1〕超時法〔4〕死鎖的檢測與解除2〕有向等待圖法①檢測死鎖畫一個表示事務等待關(guān)系的有向等待圖G=(V,E)。V為結(jié)點集合,結(jié)點表示一個正在運行的事務;E為有向邊集合,有向邊表示事務的等待關(guān)系。假設T1正在等待給被T2鎖住的數(shù)據(jù)項加鎖,那么在T1和T2之間劃一條有向邊,方向是T1指向T2。事務的有向等待圖動態(tài)地反映了所有事務的等待情況?!?〕死鎖的檢測與解除2〕有向等待圖法〔4〕死鎖的檢測與解除有向等待圖中的每個回路意味著死鎖的存在;如果無任何回路,那么表示無死鎖產(chǎn)生。并發(fā)控制子系統(tǒng)周期性地〔比方每隔0.5分鐘〕檢測事務的有向等待圖,如果發(fā)現(xiàn)有向等待圖中存在回路,就表示系統(tǒng)中出現(xiàn)了死鎖?!?〕死鎖的檢測與解除有向等待圖中的每個回路意味著死鎖的存在〔4〕死鎖的檢測與解除2〕有向等待圖法①檢測死鎖②解除死鎖選擇一個處理死鎖代價最小的事務,將其撤消,釋放它持有的所有鎖?!?〕死鎖的檢測與解除2〕有向等待圖法通常情況下,如果一個事務在執(zhí)行過程中沒有與其它事務并發(fā)運行,也就是說該事務的執(zhí)行沒有受到其它事務干擾時,就認為該事務的運行結(jié)果是正常的或者是預想的。也就是說,當多個事務串行執(zhí)行時,各事務的運行結(jié)果一定是正確的。因此,僅當幾個事務的并發(fā)運行結(jié)果與這些事務按某一次序串行運行的結(jié)果一樣時,這樣的并發(fā)操作才是正確的。通常情況下,如果一個事務在執(zhí)行過程中沒有與其它事務并發(fā)運行,通常把按某一執(zhí)行次序安排的事務執(zhí)行的步驟稱為調(diào)度(Schedule)。多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一順序串行地執(zhí)行它們時的結(jié)果一樣。稱這種調(diào)度稱為可串行化〔Serializable〕調(diào)度??纱行浴睸erializability〕是并發(fā)事務正確性的判別準那么。按照這個準那么的規(guī)定,一個給定的并發(fā)調(diào)度,當且僅當它可串行化時,才認為是正確的調(diào)度。通常把按某一執(zhí)行次序安排的事務執(zhí)行的步驟稱為調(diào)度(Sched例如事務T1:從賬號A將數(shù)量為100的款項轉(zhuǎn)到賬號B;事務T2:從賬號B將20%的款項轉(zhuǎn)到賬號C。假設A、B和C的初值分別為600、300和100。例如(a)(b)T2Read(A) A:=A-100Write(A)Read(B) B:=B+100Write(B) Read(B) Temp:=B*0.2B:=B-tempWrite(B)Read(C) C:=C+tempWrite(C)Read(B)Temp:=B*0.2B:=B-tempWrite(B)Read(C) C:=C+tempWrite(C)Read(A)A:=A-100Write(A)Read(B)B:=B+100Write(B)T2T1T1正確的并發(fā)調(diào)度(a)(b)T2Read(A) Read(B) RT1T2T1T2Read(A) A:=A-100Write(A) Read(B)Temp:=B*0.2B:=B-tempWrite(B)Read(B) B:=B+100Write(B) Read(C)C:=C+tempWrite(C)Read(A)A:=A-100Write(A)Read(B)B:=B+100Write(B)Read(B)Temp:=B*0.2B:=B-tempWrite(B)Read(C) C:=C+tempWrite(C)(c)(d)T1T2T1T2Read(A) Read(B)Read(B)DBMS普遍采用加鎖方法實現(xiàn)并發(fā)操作調(diào)度的可串行性,從而保證調(diào)度的正確性。兩段鎖〔Two-PhaseLocking,簡稱2PL〕協(xié)議就是保證并發(fā)調(diào)度可串行性的鎖協(xié)議。①規(guī)那么在每一個事務中,所有的加鎖語句都在解鎖語句之前。DBMS普遍采用加鎖方法實現(xiàn)并發(fā)操作調(diào)度的可串行性,從而保證加鎖段〔擴展階段〕:事務可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖。。解鎖段〔收縮階段〕:事務可以釋放任何數(shù)據(jù)項上的任何類型的瑣,但是不能再申請任何瑣。加鎖段〔擴展階段〕:事務可以申請獲得任何數(shù)據(jù)項上的任何類型的②兩段鎖協(xié)議和可串行化調(diào)度假設并發(fā)執(zhí)行的所有事務均遵守兩段鎖協(xié)議,那么對這些事務的任何并發(fā)調(diào)度策略都是可串行化的〔充分條件,不是必要條件〕③兩段鎖協(xié)議和一次加鎖法一次加鎖法遵守兩段鎖協(xié)議;遵守兩段鎖協(xié)議的事務并不遵守一次加鎖法。②兩段鎖協(xié)議和可串行化調(diào)度《并發(fā)控制》幻燈片本課件PPT僅供大家學習使用學習完請自行刪除,謝謝!本課件PPT僅供大家學習使用學習完請自行刪除,謝謝!《并發(fā)控制》幻燈片本課件PPT僅供大家學習使用主要內(nèi)容數(shù)據(jù)庫并發(fā)操作帶來的數(shù)據(jù)不一致問題鎖鎖協(xié)議封鎖帶來的問題:活鎖和死鎖并發(fā)操作的調(diào)度主要內(nèi)容數(shù)據(jù)庫并發(fā)操作帶來的數(shù)據(jù)不一致問題并發(fā)控制數(shù)據(jù)庫是一個可以供多個用戶共同使用的共享資源。串行訪問,每個時刻只能有一個用戶應用程序?qū)?shù)據(jù)庫進展存取,其它用戶程序必須等待。缺點:制約數(shù)據(jù)庫訪問效率的瓶頸,不利于數(shù)據(jù)庫資源的利用。并行訪問,通過并發(fā)控制機制允許多個用戶并發(fā)地訪問數(shù)據(jù)庫。并發(fā)控制數(shù)據(jù)庫是一個可以供多個用戶共同使用的共享資源。并發(fā)控制當多個用戶并發(fā)地訪問數(shù)據(jù)庫時就會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況。假設對并發(fā)操作不加以控制就會造成錯誤地存取數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。數(shù)據(jù)庫的并發(fā)控制機制是衡量數(shù)據(jù)庫管理系統(tǒng)性能的重要技術(shù)標志。并發(fā)控制當多個用戶并發(fā)地訪問數(shù)據(jù)庫時就會產(chǎn)生多個事務同時存取并發(fā)操作帶來的數(shù)據(jù)不一致問題例7.16在一個飛機訂票系統(tǒng)中,可能會出現(xiàn)的業(yè)務:〔1〕甲售票點讀航班X的機票余額數(shù)為A=25;〔2〕緊接著,乙售票點讀同一航班X的機票余額數(shù)A=25;〔3〕甲售票點賣出一張機票,然后修改機票余額數(shù)A=A-1為24,并把A寫回數(shù)據(jù)庫;〔4〕乙售票點也賣出一張機票,同樣接著修改機票余額數(shù)A=A-1為24,并把A寫回數(shù)據(jù)庫。設甲售票點對應于事務T1,乙售票點對應于事務T2,那么上述事務過程的描述如圖并發(fā)操作帶來的數(shù)據(jù)不一致問題例7.16在一個飛機訂票系統(tǒng)時間T1T2DB中的A值t025t1read(A)t2read(A)t3A:=A-1t4write(A)t524t6A:=A-1t7write(A)t824丟失修改〔1〕喪失修改時間T1T2DB中的A值t025t1read(A)t2rea時間T1T2DB中的A值t025t1read(A)t2read(A)t3A:=A-10t4write(A)t515讀過時數(shù)據(jù)〔2〕讀過時數(shù)據(jù)時間T1T2DB中的A值t025t1read(A)t2rea時間T1T2DB中的A值t025t1read(A)t2A:=A-10t3write(A)t4read(A)15t5ROLLBACKt625讀“臟”數(shù)據(jù)〔3〕讀“臟〞數(shù)據(jù)時間T1T2DB中的A值t025t1read(A)t2A:=DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題并發(fā)操作可能帶來的數(shù)據(jù)不一致性情況有三種〔1〕喪失修改〔2〕讀過時數(shù)據(jù)〔3〕讀“臟〞數(shù)據(jù)DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題并發(fā)操作可能帶來的數(shù)據(jù)不產(chǎn)生原因:

并發(fā)操作破壞了事務的隔離性并發(fā)控制就是要通過正確的調(diào)度方式,使一個用戶事務的執(zhí)行不受其它事務的干擾,從而避免造成數(shù)據(jù)的不一致性。DB并發(fā)操作帶來的三類數(shù)據(jù)不一致問題產(chǎn)生原因:并發(fā)控制就是要通過正確的調(diào)度方式,使一個用戶事務的定義鎖是防止存取同一資源的用戶之間出現(xiàn)不正確地修改數(shù)據(jù)或不正確地更改數(shù)據(jù)構(gòu)造的一種機制。根本的鎖方式有二種:排它鎖(ExclusiveLocks,簡記為X鎖)共享鎖(ShareLocks,簡記為S鎖)定義〔1〕排它鎖(X鎖)當某個事務T為修改某個數(shù)據(jù)項A且不允許其它事務修改該數(shù)據(jù)項,或不允許其它事務對該數(shù)據(jù)項加S鎖時,那么該事務可以對A加排它鎖,排它鎖又稱為寫鎖。本領務:讀A,修改A其它事務:在T釋放A上的X鎖之前不能讀A和修改A〔1〕排它鎖(X鎖)當某個事務T為修改某個數(shù)據(jù)項A且不允許其〔2〕共享鎖(S鎖)當某個事務T希望阻止其它事務修改正為它讀取的某個數(shù)據(jù)項A時,那么該事務可以對A加共享鎖,共享鎖又稱為讀鎖。本領務:讀A,不能修改A其它事務:加S鎖讀A,在T釋放A上S鎖之前不能修改A〔2〕共享鎖(S鎖)當某個事務T希望阻止其它事務修改正為它讀SX-S×X××S鎖和X鎖的共存相容矩陣SX-S×X××S鎖和X鎖的共存相容矩陣當一個事務T要對某個項加鎖時,還必須遵守某種規(guī)那么,比方在什么條件下可以申請S鎖或X鎖,持鎖時間如何確定、何時釋放鎖等。一般稱這些規(guī)那么為鎖協(xié)議〔LockingProtocol〕。對加鎖方式規(guī)定不同的規(guī)那么,就形成了不同的鎖協(xié)議。不正確的并發(fā)操作可能帶來的喪失修改、讀過時數(shù)據(jù)和讀“臟〞數(shù)據(jù)等不一致性問題,三級鎖協(xié)議在不同程度上可以解決這些問題。當一個事務T要對某個項加鎖時,還必須遵守某種規(guī)那么,比方在什〔1〕一級鎖協(xié)議事務T在修改數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加X鎖,在獲得了X加鎖后,直到該事務T完畢時才釋放所加的X鎖。如果未獲準加X鎖,那么該事務T進入等待狀態(tài),直到獲準X加鎖后該事務才繼續(xù)執(zhí)行?!?〕一級鎖協(xié)議事務T在修改數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項事務T要修改數(shù)據(jù)R:申請加X鎖?等待加X鎖YNT結(jié)束釋放X鎖〔1〕一級鎖協(xié)議本領務:讀R,修改R;用COMMIT和ROLLBACK釋放X鎖其它事務:在T完畢前不能讀R,也不能修改R作用:防止喪失修改事務T要修申請加X鎖?等待加X鎖YNT結(jié)束〔1〕一級鎖協(xié)議〔2〕二級鎖協(xié)議二級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如下規(guī)那么:事務T在讀數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加S鎖,在獲得了S加鎖后,讀完數(shù)據(jù)R后即可釋放所加的S鎖。如果未獲準加S鎖,那么該事務T進入等待狀態(tài),直到獲準S加鎖后該事務才繼續(xù)執(zhí)行?!?〕二級鎖協(xié)議二級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖讀數(shù)據(jù)YN釋放S鎖〔2〕二級鎖協(xié)議一級鎖協(xié)議+本領務:讀R,不能修改R;用UNLOCK釋放S鎖(不需等T完畢)其它事務:可加S鎖讀R,不能修改R作用:防止喪失修改,防止讀“臟〞數(shù)據(jù)事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖YN釋放S鎖〔2〕二〔3〕三級鎖協(xié)議三級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如下規(guī)那么:事務T在讀數(shù)據(jù)R之前必須先對數(shù)據(jù)R所在的項申請加S鎖,在獲得了S加鎖后,直到該事務T完畢時才釋放所加的S鎖。如果未獲準加S鎖,那么該事務T進入等待狀態(tài),直到獲準S加鎖后該事務才繼續(xù)執(zhí)行?!?〕三級鎖協(xié)議三級鎖協(xié)議除包括一級鎖協(xié)議的內(nèi)容外,還包括如事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖讀數(shù)據(jù)YNT結(jié)束釋放S鎖〔3〕三級鎖協(xié)議一級鎖協(xié)議+

本領務:讀R,不能修改R;用COMMIT和ROLLBACK釋放其它事務:可加S鎖讀R,不能修改R作用:防止喪失修改,防止讀“臟〞數(shù)據(jù),防止讀過時數(shù)據(jù)事務T要讀數(shù)據(jù)R:申請加S鎖?等待加S鎖YNT結(jié)束〔3〕三級如果事務T1封鎖了數(shù)據(jù)R,事務T2又請求封鎖R,于是T2等待,T3也請求封鎖R,當T1釋放了R上的封鎖之后,系統(tǒng)首先批準了T3的請求,T2仍然等待,然后T4又請求封鎖R,當T3釋放了R上的封鎖之后,系統(tǒng)又批準了T4的請求,T2繼續(xù)等待,……,如此下去,T2有可能永遠等待。這種可能存在某個事務永遠處于等待狀態(tài)、得不到封鎖的時機的現(xiàn)象,稱為活鎖。解決方法:先來者先執(zhí)行。如果事務T1封鎖了數(shù)據(jù)R,事務T2又請求封鎖R,于是T2等待T1T2①②④③〔2〕死鎖兩個或兩個以上的事務都處于等待狀態(tài),每個事務都在等待其中另一個事務解除封鎖,它才能繼續(xù)執(zhí)行下去,結(jié)果任何一個事務都無法繼續(xù)執(zhí)行,這種現(xiàn)象稱為死鎖。T1T2①②④③〔2〕死鎖兩個或兩個以上的事務都處于等待狀態(tài)〔3〕死鎖的預防〔OS〕①一次加鎖法要求每個事務必須對所有要使用的數(shù)據(jù)項一次性地全部加鎖,否那么就不能繼續(xù)執(zhí)行。缺點:擴大了鎖的范圍,降低了系統(tǒng)的并發(fā)度?!?〕死鎖的預防〔OS〕①一次加鎖法〔3〕死鎖的預防〔OS〕②順序加鎖法預先對數(shù)據(jù)項規(guī)定一個加鎖順序,所有事務都按這個順序進展加鎖。缺點:很難按規(guī)定的順序進展加鎖?!?〕死鎖的預防〔OS〕②順序加鎖法〔4〕死鎖的檢測與解除1〕超時法如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖。優(yōu)點:實現(xiàn)簡單缺點:有可能誤判死鎖假設時限設置的太長,可能出現(xiàn)死鎖發(fā)生后不能及時發(fā)現(xiàn)的情況?!?〕死鎖的檢測與解除1〕超時法〔4〕死鎖的檢測與解除2〕有向等待圖法①檢測死鎖畫一個表示事務等待關(guān)系的有向等待圖G=(V,E)。V為結(jié)點集合,結(jié)點表示一個正在運行的事務;E為有向邊集合,有向邊表示事務的等待關(guān)系。假設T1正在等待給被T2鎖住的數(shù)據(jù)項加鎖,那么在T1和T2之間劃一條有向邊,方向是T1指向T2。事務的有向等待圖動態(tài)地反映了所有事務的等待情況?!?〕死鎖的檢測與解除2〕有向等待圖法〔4〕死鎖的檢測與解除有向等待圖中的每個回路意味著死鎖的存在;如果無任何回路,那么表示無死鎖產(chǎn)生。并發(fā)控制子系統(tǒng)周期性地〔比方每隔0.5分鐘〕檢測事務的有向等待圖,如果發(fā)現(xiàn)有向等待圖中存在回路,就表示系統(tǒng)中出現(xiàn)了死鎖?!?〕死鎖的檢測與解除有向等待圖中的每個回路意味著死鎖的存在〔4〕死鎖的檢測與解除2〕有向等待圖法①檢測死鎖②解除死鎖選擇一個處理死鎖代價最小的事務,將其撤消,釋放它持有的所有鎖?!?〕死鎖的檢測與解除2〕有向等待圖法通常情況下,如果一個事務在執(zhí)行過程中沒有與其它事務并發(fā)運行,也就是說該事務的執(zhí)行沒有受到其它事務干擾時,就認為該事務的運行結(jié)果是正常的或者是預想的。也就是說,當多個事務串行執(zhí)行時,各事務的運行結(jié)果一定是正確的。因此,僅當幾個事務的并發(fā)運行結(jié)果與這些事務按某一次序串行運行的結(jié)果一樣時,這樣的并發(fā)操作才是正確的。通常情況下,如果一個事務在執(zhí)行過程中沒有與其它事務并發(fā)運行,通常把按某一執(zhí)行次序安排的事務執(zhí)行的步驟稱為調(diào)度(Schedule)。多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一順序串行地執(zhí)行它們時的結(jié)果一樣。稱這種調(diào)度稱為可串行化〔Serializable〕調(diào)度??纱行浴睸erializability〕是并發(fā)事務正確性的判別準那么。按照這個準那么的規(guī)定,一個給定的并發(fā)調(diào)度,當且僅當它可串行化時,才認為

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論