




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)據(jù)庫的并發(fā)控制和封鎖協(xié)議分析摘要數(shù)據(jù)庫可以提供給多個用戶共享數(shù)據(jù)信息資源,所以就必須對并發(fā)的事務進行控制,這種并發(fā)控制必須引入一些封鎖協(xié)議以保證數(shù)據(jù)的完整性。本文針對數(shù)據(jù)庫并發(fā)操作中可能產(chǎn)生的數(shù)據(jù)不一致性問題進行分析,并給出解決的方法。關鍵詞數(shù)據(jù)庫并發(fā)控制一致性封鎖封鎖協(xié)議一、引言目前主流的關系數(shù)據(jù)庫通常都允許多個用戶同時使用和共享,所以也都具有并發(fā)控制的機制,也就是控制數(shù)據(jù)庫,防止多用戶并發(fā)使用數(shù)據(jù)庫時造成數(shù)據(jù)錯誤和程序運行錯誤,以保證數(shù)據(jù)的完整性。二、事務與并發(fā)控制的概念當多用戶并發(fā)存取數(shù)據(jù)時,就會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況,從而引起嚴重的數(shù)據(jù)錯誤和程序運行錯誤。那么我們來看,什
2、么是事務及并發(fā)控制呢?事務就是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做要么全不做,是一個不可分割的很小的工作單位。例如,在SQL語言中,定義事務的語句有三條:BEGINTRANSACTIO;NCOMMIT;ROLLBAC;K其中的BEGINTRANSACTIO艱事務開始的標記,而以COMMIT或者ROLLBACKS束,COMMIT用于提交事務的所有操作,ROLLBACK則在事務運行過程中一旦發(fā)生了某種故障而使事務無法繼續(xù)執(zhí)行的時候,系統(tǒng)就將事務中對數(shù)據(jù)庫的所有剛剛完成的操作全部撤消,滾動回到事務開始時的狀態(tài)。為了充分利用系統(tǒng)資源,使數(shù)據(jù)庫的共享資源得以有效利用,必須可以使多個事務并行的執(zhí)
3、行,而數(shù)據(jù)庫對并行執(zhí)行的事務進行的控制就是并發(fā)控制。三、事務進行并發(fā)操作可能引起的數(shù)據(jù)不一致問題由于種種原因,都可能引起數(shù)據(jù)庫的數(shù)據(jù)遭到破壞,比如多個事務在并行運行的時候,不同的事務的操作產(chǎn)生了交叉執(zhí)行,或者,事務在運行過程中被強行停止或者中斷。因此,事務在進行并發(fā)操作的時候很可能引起數(shù)據(jù)的不一致,下面我們看一個具體的例子。例如飛機票的聯(lián)網(wǎng)銷售系統(tǒng),如果有以下的操作序列:1 .甲售票處(設置為T1事務)讀出某班次的機票剩余數(shù)A,設A=202 .乙售票處(設置為T2事務)讀出同班次的機票剩余數(shù)A,也是203 .甲售票處(T1事務)賣出一張機票,修改剩余數(shù)減一(AA-1),把A=19寫回數(shù)據(jù)庫中4
4、 .乙售票處(T2事務)也賣出一張機票,修改剩余數(shù)減一(AA-1),把A=19寫回數(shù)據(jù)庫中從這些操作中,我們看到,乙售票處的修改數(shù)據(jù)覆蓋了甲售票處修改的數(shù)據(jù),實際發(fā)生了兩張機票的銷售,而數(shù)據(jù)庫中卻錯誤的存入19,少了一張。參看圖1的情況。這種情況是并發(fā)操作引起數(shù)據(jù)不一致的第一種情況,叫做丟失修改(LostUpdate),第二種是不可重復讀(Non-RepeatableRead,第三種是讀“臟”數(shù)據(jù)(DirtyRead)。;下邊看第二種情況,不可重復讀是指事務T1讀數(shù)據(jù)以后,T2執(zhí)行更新操作,就使T1無法再現(xiàn)原先讀取的數(shù)據(jù),得到與上一次不同的結果,例如圖2。;讀臟”數(shù)據(jù)是指T1修改某數(shù)據(jù)并將其寫
5、回數(shù)據(jù)庫,T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤消,T1執(zhí)行回滾,恢復到原始的數(shù)據(jù),T2就讀取到了過程中的一個作廢的數(shù)據(jù),這個數(shù)據(jù)就是一種垃圾數(shù)據(jù),稱之為“臟”數(shù)據(jù),也是不正確的。參看圖3。;從以上例子我們看到,數(shù)據(jù)不一致性的主要原因就是并發(fā)操作沒有對事務進行一定的隔離,所以,正確的調(diào)度應該使一個用戶的事務不受到其他事務的干擾,從而避免數(shù)據(jù)的不一致性。四、在并發(fā)控制中采用封鎖協(xié)議解決數(shù)據(jù)的不一致性并發(fā)控制的主要方法是封鎖(Locking就是要用正確的方式調(diào)度并發(fā)操作,使一個用戶的事務在執(zhí)行過程中不受其他事務的干擾,從而避免造成數(shù)據(jù)的不一致性。封鎖是使事務對它要操作的數(shù)據(jù)有一定的控制能力。封鎖
6、通常具有3個環(huán)節(jié):第一個環(huán)節(jié)是申請加鎖,即事務在操作前要對它將使用的數(shù)據(jù)提出加鎖申請;第二個環(huán)節(jié)是獲得鎖,即當條件成熟時,系統(tǒng)允許事務對數(shù)據(jù)進行加鎖,從而事務獲得數(shù)據(jù)的控制權;第三個環(huán)節(jié)是釋放鎖,即完成操作后事務放棄數(shù)據(jù)的控制權?;镜姆怄i類型有以下兩種:1 .排它鎖(ExclusiveLocks簡稱X鎖)排它鎖也稱為獨占鎖或寫鎖。一旦事務T對數(shù)據(jù)對象A加上排它鎖(X鎖),則只允許T讀取和修改A,其他任何事務既不能讀取和修改A,也不能再對A加任何類型的鎖,直到T釋放A上的鎖為止。2 .共享鎖(ShareLocks簡稱S鎖)共享鎖又稱讀鎖。如果事務T對數(shù)據(jù)對象A加上共享鎖(S鎖),其他事務只能再對A加S鎖,不能加X鎖,直到事務T釋放A上的S鎖為止。在對數(shù)據(jù)進行加鎖時,另外需要約定并執(zhí)行一些規(guī)則和協(xié)議,其中包括何時申請鎖,保持鎖的時間以及何時釋放等,這些規(guī)則就稱為封鎖協(xié)議(LockingProtocol)其總共分為以下三級:(1)一級封鎖協(xié)議。一級封鎖協(xié)議是事務T在修改數(shù)據(jù)之前必須先對其加X鎖,直到事務結束才釋放。(2)二級封鎖協(xié)議。二級封鎖協(xié)議是事務T對要修改數(shù)據(jù)必須先加X鎖,直到事務結束才釋放X鎖;對要讀取的數(shù)據(jù)必須先加S鎖,讀完后即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技創(chuàng)新驅動下的產(chǎn)品設計新趨勢
- 2025年中國內(nèi)蒙古園林綠化行業(yè)市場深度分析及發(fā)展前景預測報告
- 個體店轉讓合同范本
- 2020-2025年中國流感疫苗行業(yè)市場前景預測及投資方向研究報告
- 農(nóng)村道路施工合同范本
- 冷庫租用合同范本
- 關于裝修工程項目合同范本
- 冷凍倉儲合同范本
- 倉單質(zhì)押合同范本
- 買小產(chǎn)房合同范本
- 2022年二年級語文下冊二類字注音新人教版
- 高速公路聲屏障項目施工組織設計
- 2022年期貨基礎知識培訓資料
- 《-鈍感力》渡邊淳一-讀書分享ppt
- T∕CAMDI 009.1-2020 無菌醫(yī)療器械初包裝潔凈度 第1部分:微粒污染試驗方法 氣體吹脫法
- 醫(yī)院門診掛號收費系統(tǒng)操作要點
- 國家農(nóng)產(chǎn)品質(zhì)量安全監(jiān)督抽查抽樣單
- 聘書模板可編輯
- 離心式壓縮機功率公式
- 參保人員就醫(yī)流程doc
- 2019湘美版五年級《書法練習指導》下冊教案
評論
0/150
提交評論