已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)的并發(fā)控制和封鎖協(xié)議分析摘要 數(shù)據(jù)庫(kù)可以提供給多個(gè)用戶共享數(shù)據(jù)信息資源,所以就必須對(duì)并發(fā)的事務(wù)進(jìn)行控制,這種并發(fā)控制必須引入一些封鎖協(xié)議以保證數(shù)據(jù)的完整性。本文針對(duì)數(shù)據(jù)庫(kù)并發(fā)操作中可能產(chǎn)生的數(shù)據(jù)不一致性問題進(jìn)行分析,并給出解決的方法。 關(guān)鍵詞 數(shù)據(jù)庫(kù) 并發(fā)控制 一致性 封鎖 封鎖協(xié)議 一、引言 目前主流的關(guān)系數(shù)據(jù)庫(kù)通常都允許多個(gè)用戶同時(shí)使用和共享,所以也都具有并發(fā)控制的機(jī)制,也就是控制數(shù)據(jù)庫(kù),防止多用戶并發(fā)使用數(shù)據(jù)庫(kù)時(shí)造成數(shù)據(jù)錯(cuò)誤和程序運(yùn)行錯(cuò)誤,以保證數(shù)據(jù)的完整性。 二、事務(wù)與并發(fā)控制的概念 當(dāng)多用戶并發(fā)存取數(shù)據(jù)時(shí),就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況,從而引起嚴(yán)重的數(shù)據(jù)錯(cuò)誤和程序運(yùn)行錯(cuò)誤。 那么我們來看,什么是事務(wù)及并發(fā)控制呢? 事務(wù)就是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的很小的工作單位。例如,在SQL語言中,定義事務(wù)的語句有三條: BEGIN TRANSACTION; COMMIT; ROLLBACK; 其中的BEGIN TRANSACTION是事務(wù)開始的標(biāo)記,而以COMMIT或者ROLLBACK結(jié)束,COMMIT用于提交事務(wù)的所有操作,ROLLBACK則在事務(wù)運(yùn)行過程中一旦發(fā)生了某種故障而使事務(wù)無法繼續(xù)執(zhí)行的時(shí)候,系統(tǒng)就將事務(wù)中對(duì)數(shù)據(jù)庫(kù)的所有剛剛完成的操作全部撤消,滾動(dòng)回到事務(wù)開始時(shí)的狀態(tài)。 為了充分利用系統(tǒng)資源,使數(shù)據(jù)庫(kù)的共享資源得以有效利用,必須可以使多個(gè)事務(wù)并行的執(zhí)行,而數(shù)據(jù)庫(kù)對(duì)并行執(zhí)行的事務(wù)進(jìn)行的控制就是并發(fā)控制。 三、事務(wù)進(jìn)行并發(fā)操作可能引起的數(shù)據(jù)不一致問題 由于種種原因,都可能引起數(shù)據(jù)庫(kù)的數(shù)據(jù)遭到破壞,比如多個(gè)事務(wù)在并行運(yùn)行的時(shí)候,不同的事務(wù)的操作產(chǎn)生了交叉執(zhí)行,或者,事務(wù)在運(yùn)行過程中被強(qiáng)行停止或者中斷。 因此,事務(wù)在進(jìn)行并發(fā)操作的時(shí)候很可能引起數(shù)據(jù)的不一致,下面我們看一個(gè)具體的例子。例如飛機(jī)票的聯(lián)網(wǎng)銷售系統(tǒng),如果有以下的操作序列: 1.甲售票處(設(shè)置為T1事務(wù))讀出某班次的機(jī)票剩余數(shù)A,設(shè)A=20 2.乙售票處(設(shè)置為T2事務(wù))讀出同班次的機(jī)票剩余數(shù)A,也是20 3.甲售票處(T1事務(wù))賣出一張機(jī)票,修改剩余數(shù)減一(AA-1),把A=19寫回?cái)?shù)據(jù)庫(kù)中 4.乙售票處(T2事務(wù))也賣出一張機(jī)票,修改剩余數(shù)減一(AA-1),把A=19寫回?cái)?shù)據(jù)庫(kù)中 從這些操作中,我們看到,乙售票處的修改數(shù)據(jù)覆蓋了甲售票處修改的數(shù)據(jù),實(shí)際發(fā)生了兩張機(jī)票的銷售,而數(shù)據(jù)庫(kù)中卻錯(cuò)誤的存入19,少了一張。參看圖1的情況。 這種情況是并發(fā)操作引起數(shù)據(jù)不一致的第一種情況,叫做丟失修改(Lost Update),第二種是不可重復(fù)讀(Non-Repeatable Read),第三種是讀“臟”數(shù)據(jù)(Dirty Read)。 下邊看第二種情況,不可重復(fù)讀是指事務(wù)T1讀數(shù)據(jù)以后,T2執(zhí)行更新操作,就使T1無法再現(xiàn)原先讀取的數(shù)據(jù),得到與上一次不同的結(jié)果,例如圖2。 讀“臟”數(shù)據(jù)是指T1修改某數(shù)據(jù)并將其寫回?cái)?shù)據(jù)庫(kù),T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤消,T1執(zhí)行回滾,恢復(fù)到原始的數(shù)據(jù),T2就讀取到了過程中的一個(gè)作廢的數(shù)據(jù),這個(gè)數(shù)據(jù)就是一種垃圾數(shù)據(jù),稱之為“臟”數(shù)據(jù),也是不正確的。參看圖3。 從以上例子我們看到,數(shù)據(jù)不一致性的主要原因就是并發(fā)操作沒有對(duì)事務(wù)進(jìn)行一定的隔離,所以,正確的調(diào)度應(yīng)該使一個(gè)用戶的事務(wù)不受到其他事務(wù)的干擾,從而避免數(shù)據(jù)的不一致性。 四、在并發(fā)控制中采用封鎖協(xié)議解決數(shù)據(jù)的不一致性 并發(fā)控制的主要方法是封鎖(Locking)。就是要用正確的方式調(diào)度并發(fā)操作,使一個(gè)用戶的事務(wù)在執(zhí)行過程中不受其他事務(wù)的干擾,從而避免造成數(shù)據(jù)的不一致性。 封鎖是使事務(wù)對(duì)它要操作的數(shù)據(jù)有一定的控制能力。封鎖通常具有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)允許事務(wù)對(duì)數(shù)據(jù)進(jìn)行加鎖,從而事務(wù)獲得數(shù)據(jù)的控制權(quán);第三個(gè)環(huán)節(jié)是釋放鎖,即完成操作后事務(wù)放棄數(shù)據(jù)的控制權(quán)。 基本的封鎖類型有以下兩種: 1.排它鎖(Exclusive Locks,簡(jiǎn)稱X鎖) 排它鎖也稱為獨(dú)占鎖或?qū)戞i。一旦事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上排它鎖(X鎖),則只允許T讀取和修改A,其他任何事務(wù)既不能讀取和修改A,也不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖為止。 2.共享鎖(Share Locks,簡(jiǎn)稱S鎖) 共享鎖又稱讀鎖。如果事務(wù)T對(duì)數(shù)據(jù)對(duì)象A加上共享鎖(S鎖),其他事務(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é)議(Locking Protocol),其總共分為以下三級(jí): (1)一級(jí)封鎖協(xié)議。一級(jí)封鎖協(xié)議是事務(wù)T在修改數(shù)據(jù)之前必須先對(duì)其加X鎖,直到事務(wù)結(jié)束才釋放。 (2)二級(jí)封鎖協(xié)議。二級(jí)封鎖協(xié)議是事務(wù)T對(duì)要修改數(shù)據(jù)必須先加X鎖,直到事務(wù)結(jié)束才釋放X鎖;對(duì)要讀取的數(shù)據(jù)必須先加S鎖,讀完后即可釋放S鎖。 (3)三級(jí)封鎖協(xié)議。三級(jí)封鎖協(xié)議是事務(wù)T在讀取數(shù)據(jù)之前必須先對(duì)其加S鎖,在要修改數(shù)據(jù)之前必須先對(duì)其加X鎖,直到事務(wù)結(jié)束后才釋放所有鎖。 執(zhí)行了封鎖協(xié)議之后,就可以克服數(shù)據(jù)庫(kù)操作中的數(shù)據(jù)不一致所引起的問題。 參看圖4。 從圖4的情況我們看到事務(wù)T1在執(zhí)行過程中獨(dú)自占用并加X鎖,直到處理完之后再釋放鎖,T2雖然也需要使用,但是在封鎖協(xié)議的約束之下,T2所要求的X鎖就被拒絕,因此必須處于等待狀態(tài),直到T1釋放之后,T2才獲得使用的權(quán)利,這樣就不會(huì)發(fā)生使用沖突,避免了數(shù)據(jù)的丟失。這里我們看到,此處實(shí)際上是執(zhí)行了一級(jí)封鎖協(xié)議。 下面我們看圖5。 通過圖5,能夠清楚的看到,由于施行了封鎖協(xié)議,使事務(wù)T1使用了共享鎖占用A,B兩塊數(shù)據(jù),這樣T2需要加上的X鎖就無法實(shí)現(xiàn),(如果是S鎖,雖然可以加上,但也不能夠隨便修改數(shù)據(jù),只是讀取一下數(shù)據(jù)。)當(dāng)T1釋放鎖之后,T2就可以得到并使用鎖了,這樣讀取的數(shù)據(jù)B仍然還是100,不影響A+B的結(jié)果,這就是可重復(fù)讀取。因此我們看到,其實(shí)這里用的就是三級(jí)封鎖協(xié)議。 參看圖6,事務(wù)T1在對(duì)數(shù)據(jù)C修改之前,先加上了X鎖,修改后寫回?cái)?shù)據(jù)庫(kù),這時(shí)T2請(qǐng)求在C上添加S鎖,因?yàn)門1加了X鎖,T2只好等待,當(dāng)T1因?yàn)槟撤N原因撤銷了修改的數(shù)據(jù)后,C就恢復(fù)了原來的數(shù)據(jù)100,等T1釋放X鎖后T2獲得C上的S鎖,讀到的還是C=100,因此避免了讀出“臟”數(shù)據(jù)。這里使用的其實(shí)就是二級(jí)封鎖協(xié)議。 通過以上內(nèi)容,數(shù)據(jù)庫(kù)由于采用一定的封鎖協(xié)議避免了數(shù)據(jù)的不一致性問題,這使得數(shù)據(jù)庫(kù)的并發(fā)控制有效而且有益,從而使得多項(xiàng)事務(wù)可以并行的操作數(shù)據(jù)庫(kù)的共享資源了。這就是數(shù)據(jù)庫(kù)合理的進(jìn)行調(diào)度,避免了沖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年基于AI的金融風(fēng)險(xiǎn)評(píng)估模擬題
- 足細(xì)胞病的診斷與管理2026
- 2026年市場(chǎng)營(yíng)銷經(jīng)理招聘筆試題目解析
- 2026年醫(yī)學(xué)實(shí)驗(yàn)室技術(shù)員招聘筆試題
- 2026年環(huán)境科學(xué)與保護(hù)技術(shù)預(yù)測(cè)模擬題
- 2026年計(jì)算機(jī)等級(jí)考試全解計(jì)算機(jī)基礎(chǔ)操作應(yīng)用題庫(kù)
- 2026年?duì)I養(yǎng)師資格認(rèn)證考試營(yíng)養(yǎng)學(xué)基礎(chǔ)知識(shí)試題
- 2026年食品質(zhì)量與安全檢測(cè)員考試題及答案
- 港口工程設(shè)計(jì)制度
- 2026年能源管理與節(jié)能減排認(rèn)證題庫(kù)
- 健康體檢中心質(zhì)量管理手冊(cè)
- 人教版(2026)八年級(jí)下冊(cè)英語UNIT 4 Wonders of Nature講義
- Unit 1 Time to Relax Section A(1a-2d)教學(xué)課件 人教新教材2024版八年級(jí)英語下冊(cè)
- 礦山各類安全標(biāo)識(shí)牌規(guī)范及設(shè)計(jì)標(biāo)準(zhǔn)
- 人文知識(shí)競(jìng)賽重點(diǎn)題庫(kù)及答案
- 2025年大學(xué)《法醫(yī)學(xué)-法醫(yī)毒物分析》考試模擬試題及答案解析
- 醋酸回收系統(tǒng)工藝流程圖
- 渣土運(yùn)輸計(jì)量管理辦法
- 銷售業(yè)績(jī)統(tǒng)計(jì)圖表模板(銷售數(shù)據(jù))
- DLT 593-2016 高壓開關(guān)設(shè)備和控制設(shè)備
- 形象代言人合同模板
評(píng)論
0/150
提交評(píng)論