




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)庫并發(fā)控制技術(shù)數(shù)據(jù)庫并發(fā)控制技術(shù)10:00,A訂票點讀出航班目前的機票余額數(shù),設(shè)為10張10:02,B訂票點讀出航班目前的機票余額數(shù),也為10張10:05,A訂票點訂出6張機票,修改機票余額為10-6=4,并將4寫回到數(shù)據(jù)庫中10:06,B訂票點訂出5張機票,修改機票余額為10-5=5,并將5寫回到數(shù)據(jù)庫中10:00,A訂票點讀出航班目前的機票余額數(shù),設(shè)為10張事務(wù)事務(wù)是數(shù)據(jù)庫處理的一個邏輯工作單元,它由用戶定義的一個或多個訪問數(shù)據(jù)庫的操作組成,這些操作一般一般包括檢索(讀)、插入(寫)、刪除和修改數(shù)據(jù)。一個事務(wù)內(nèi)的所有語句被作為一個整體,要么全部執(zhí)行,要么全部不執(zhí)行。如果事務(wù)中的數(shù)據(jù)庫操
2、作僅涉及數(shù)據(jù)的檢索,而不更新數(shù)據(jù)庫,那么這樣的事務(wù)就稱為只讀事務(wù);否則,稱為讀寫事務(wù)。事務(wù)事務(wù)是數(shù)據(jù)庫處理的一個邏輯工作單元,它由用戶定義的一個或描述事務(wù)處理概念的數(shù)據(jù)庫模型一條數(shù)據(jù)庫記錄整個磁盤塊某個記錄的字段(屬性)值數(shù)據(jù)項的粒度-數(shù)據(jù)項的大小-命名數(shù)據(jù)項的集合描述事務(wù)處理概念的數(shù)據(jù)庫模型一條數(shù)據(jù)庫記錄數(shù)據(jù)項的粒度-數(shù)據(jù)庫訪問操作Read_item(X):將數(shù)據(jù)庫項X讀取到程序變量Write_item(X):將程序變量的值寫入數(shù)據(jù)庫項X中數(shù)據(jù)庫訪問操作Read_item(X):將數(shù)據(jù)庫項X讀取到程兩個事務(wù)的示例T1read_item(X);X:=X-N;Write_item(X);Read
3、_item(Y);Y:=Y-N;Write_item(Y)T2Read_item(X);X:=X+M;Write_item(X)兩個事務(wù)的示例T1T2事務(wù)的特性原子性一致性隔離性持久性事務(wù)的特性原子性事務(wù)狀態(tài)和附加操作BEGIN_TRANSACTIONREAD或WRITEEND_TRANSACTIONCOMMIT_TRANSACTIONROLLBACK(ABORT)事務(wù)狀態(tài)和附加操作BEGIN_TRANSACTION活動開始事務(wù)結(jié)束事務(wù)部分提交提交部分提交失敗撤銷終止讀、寫撤銷事務(wù)執(zhí)行狀態(tài)的狀態(tài)轉(zhuǎn)換圖活動開始事務(wù)結(jié)束事務(wù)部分提交提交部分提交失敗撤銷終止讀、寫撤調(diào)度n個事務(wù)T1,T2,TN的調(diào)度
4、S,是這些事務(wù)的操作的一個執(zhí)行順序。來自不同事務(wù)的操作可以在調(diào)度S中交替執(zhí)行。但是,對于參與調(diào)度S的事務(wù)Ti,Ti出現(xiàn)在調(diào)度中S中的操作,必須與它們在Ti中出現(xiàn)的順序一致,也就是說S中的操作必須是全序的。調(diào)度n個事務(wù)T1,T2,TN的調(diào)度S,是這些事務(wù)的操作的操作沖突的條件屬于不同的事務(wù)訪問同一數(shù)據(jù)項至少有一個操作是write_item(X)操作沖突的條件屬于不同的事務(wù)并發(fā)控制的概念數(shù)據(jù)庫中的數(shù)據(jù)是可以共享的資源,因此會有很多用戶同時使用數(shù)據(jù)庫中的數(shù)據(jù)。也就是說,在多用戶系統(tǒng)中,可能同時運行著多個事務(wù),而事務(wù)的運行需要時間,并且事務(wù)中的操作需要在一定的數(shù)據(jù)上完成。當系統(tǒng)中同時有多個事務(wù)運行時,
5、特別是當這些事務(wù)使用同一段數(shù)據(jù)時,彼此之間就有可能產(chǎn)生相互干擾。并發(fā)控制通過對并發(fā)操作進行正確的調(diào)度保證事務(wù)的ACID特性。并發(fā)控制的概念數(shù)據(jù)庫中的數(shù)據(jù)是可以共享的資源,因此會有很多用并發(fā)控制的必要性更新丟失暫時更新(臟讀)錯誤求和不可重復讀并發(fā)控制的必要性更新丟失項X的值是錯誤的,因為T1對它的更新丟失了項X的值是錯誤的,事務(wù)T1因故障而必須將X值改變回其舊值,但T2已經(jīng)讀取了X的錯誤值事務(wù)T1因故障而必須將X值T3在X減去N之后讀X,而在Y加N之前讀Y;因此產(chǎn)生了錯誤的求和結(jié)果T3在X減去N之后讀X,而并發(fā)控制的加鎖技術(shù)二進制鎖共享/排他鎖(讀/寫鎖)并發(fā)控制的加鎖技術(shù)二進制鎖二進制鎖一個
6、二進制鎖可以有兩個狀態(tài)或值:已加鎖和未加鎖(或簡化記為1和0)。每個數(shù)據(jù)項X都與一個不同的鎖相關(guān)聯(lián)。Lock_item(X)unlock_item(X)二進制鎖一個二進制鎖可以有兩個狀態(tài)或值:已加鎖和未加鎖(圖二進制鎖的加鎖和解鎖操作圖二進制鎖的加鎖和解鎖操作二進制鎖的實現(xiàn)二進制變量LOCK關(guān)聯(lián)于數(shù)據(jù)庫中的每個數(shù)據(jù)項X包含三個字段的記錄隊列存放等待訪問該項的事務(wù)系統(tǒng)維護鎖表,僅存放當前已加鎖的數(shù)據(jù)項的相應(yīng)記錄二進制鎖的實現(xiàn)二進制變量LOCK關(guān)聯(lián)于數(shù)據(jù)庫中的每個數(shù)據(jù)項X規(guī)則事務(wù)T在執(zhí)行其任何read_item(X)或write_item(X)操作之前,必須先發(fā)出一個lock_item(X)操作事
7、務(wù)T中所有read_item(X)和write_item(X)操作執(zhí)行完之后,都必須發(fā)出一個unlock_item(X)操作規(guī)則事務(wù)T在執(zhí)行其任何read_item(X)或write_共享/排他(讀/寫)鎖Read_lock(X)Write_lock(X)解鎖(釋放):Unlock(X)共享/排他(讀/寫)鎖Read_lock(X)圖共享/排他的加鎖和解鎖操作圖共享/排他的加鎖和解鎖操作共享/排他鎖的實現(xiàn)包含四個字段的記錄變量LOCK關(guān)聯(lián)于數(shù)據(jù)庫中的每個數(shù)據(jù)項X,存放讀鎖定/寫鎖定/未鎖定相應(yīng)的編碼Locking_transaction中存放持有鎖的一個事務(wù)或列表No_of_reads中存放當
8、前對該數(shù)據(jù)項進行讀操作的事務(wù)數(shù)量隊列存放等待訪問該項的事務(wù)系統(tǒng)維護鎖表,僅存放當前已加鎖的數(shù)據(jù)項的相應(yīng)記錄共享/排他鎖的實現(xiàn)包含四個字段的記錄規(guī)則事務(wù)T在執(zhí)行其任何read_item(X)操作之前,必須先發(fā)出read_lock(X)或write_lock(X)操作事務(wù)T在執(zhí)行其任何write_item(X)操作之前,必須先發(fā)出write_lock(X)操作事務(wù)T中所有read_item(X)和write_item(X)操作執(zhí)行完之后,都必須發(fā)出unlock(X)操作規(guī)則事務(wù)T在執(zhí)行其任何read_item(X)操作之前,必須死鎖事務(wù)T1對數(shù)據(jù)R1封鎖之后,又要求對數(shù)據(jù)R2封鎖而事務(wù)T2已經(jīng)獲得
9、對數(shù)據(jù)R2的封鎖之后,又要求對數(shù)據(jù)R1封鎖這兩個事務(wù)處于互相等待狀態(tài),發(fā)生死鎖事務(wù)T1時間事務(wù)T21。對R1加鎖t12。t2對R2加鎖3。請求對R2加鎖t3等待4。等待t4請求對R1加鎖等待等待死鎖事務(wù)T1對數(shù)據(jù)R1封鎖之后,又要求對數(shù)據(jù)R2封鎖事務(wù)T1死鎖的診斷 方法一.等待圖法數(shù)據(jù)庫周期性地生成事務(wù)等待關(guān)系有向圖,若圖中存在有向回路,則表明產(chǎn)生死鎖,如:死鎖的診斷 方法一.等待圖法方法二.超時法 若一個事務(wù)的等待時間超過了規(guī)定的時限,則系統(tǒng)認為產(chǎn)生了死鎖缺點: 規(guī)定時限設(shè)置過短,則容易誤判; 設(shè)置過長,則不能及時處理死鎖。方法二.超時法 若一個事務(wù)的等待時間超過了規(guī)定的時限,破除死鎖方法
10、某些事務(wù)必須回滾以破除死鎖,一般選擇回滾 帶來代價最小的事務(wù),釋放該事務(wù)所持有的全部鎖,并撤銷其對數(shù)據(jù)的修改操作。破除死鎖方法 某些事務(wù)必須回滾以破除死鎖,一般選擇回滾 死鎖的預防方法一. 一次性封鎖法 每個事務(wù)執(zhí)行時,一次性對其要使用到的數(shù)據(jù)項全部加鎖,否則不能繼續(xù)執(zhí)行(缺一不可,只要有一個鎖不能加鎖,則釋放已經(jīng)加好的鎖,繼續(xù)等待)例子: 如果T1將R1和R2一次性全部加鎖, 則T2要加鎖時只能等待直到T1釋放鎖 事務(wù)T1時間事務(wù)T21。對R1加鎖t12。t2對R2加鎖3。請求對R2加鎖t3等待4。等待t4請求對R1加鎖等待等待死鎖的預防方法一. 一次性封鎖法例子:事務(wù)T1時間事務(wù)T21方法
11、二.順序加鎖法預先對數(shù)據(jù)項規(guī)定一個加鎖排序,所以加鎖操作都要按順序,釋放鎖時按照逆序例子: 如果規(guī)定加鎖順序先R1再R2, 則T2要對R2加鎖之前,需要先對R1加鎖,即T2需要等待T1先釋放R2再釋放R1事務(wù)T1時間事務(wù)T21。對R1加鎖t12。t2對R2加鎖3。請求對R2加鎖t3等待4。等待t4請求對R1加鎖等待等待方法二.順序加鎖法預先對數(shù)據(jù)項規(guī)定一個加鎖排序,所以加鎖操作時間戳方法基于時間戳排序的并發(fā)控制時間戳方法基于時間戳排序的并發(fā)控制時間戳概念每個事物開始執(zhí)行時,系統(tǒng)會給“他/她”分配一個時間戳,通常是基于系統(tǒng)時鐘的。越晚啟動的事務(wù)其時間戳數(shù)值越大。每個數(shù)據(jù)庫項 X 也有2個時間戳:
12、讀和寫: read_TS(X) = TS(T最晚讀),即T最晚讀為成功讀取X的最晚的事務(wù); write_TS(X) = TS(T最晚寫),即T最晚寫為成功寫入X的最晚的事務(wù);時間戳概念每個事物開始執(zhí)行時,系統(tǒng)會給“他/她”分配一個時間時間戳排序(1)寫:當事物T1發(fā)出write_item(X)操作,需檢查: a.若read_TS(X) TS(T1), 或者write_TS(X) TS(T1), 則拒絕write操作,撤銷并回滾T1, 原因:這說明某個時間戳大于T1的事物T2(比T1晚啟動),在T1要寫X之前,T2已經(jīng)讀或?qū)懥薠的數(shù)據(jù); 時間戳排序(1)寫: 如果是T2先寫,則T1的寫操作將覆蓋
13、了較晚啟動的T2的寫操作,即T2寫操作無效 無效 如果是T2先寫,則T1的寫操作將覆蓋了較晚啟動的T2的寫 如果是T2先讀,則T2讀的是未經(jīng)T1修改寫入的數(shù)據(jù),但實際上較晚啟動的T2讀的應(yīng)該是T1修改后的數(shù)據(jù)。 對: 錯: X未經(jīng)T1修改 如果是T2先讀,則T2讀的是未經(jīng)T1修改寫入的數(shù)據(jù),但實以上都違反了時間戳順序。b.若以上(a)中的條件沒有發(fā)生,則執(zhí)行T1的寫操作,并將write_TS(X)的值設(shè)置為TS(T1).以上都違反了時間戳順序。(2)讀:當事務(wù)T1發(fā)出read_item(X)操作,需檢查: a.若write_TS(X) TS(T1),則拒絕read操作,撤銷并回滾T1,(2)讀
14、:原因:說明在T1要讀X之前,比T1晚啟動的T2已經(jīng)修改了X的數(shù)據(jù),所以X已經(jīng)不再是T1啟動時的數(shù)據(jù)值了。 對: 錯:X被T2修改X被T2修改 b. 若(a)中的條件沒有發(fā)生,則執(zhí)行T1的讀操作, 并將read_TS(X)的值設(shè)置為TS(T1)和當前的read_TS(X) 中的最大值。 這是因為在T1讀X前后,其他事務(wù)(如T2)都可以讀X。 b. 若(a)中的條件沒有發(fā)生,則執(zhí)行T1的讀操作,樂觀 的并發(fā)控制方法提取和修改檢驗提交和寫回樂觀 的并發(fā)控制方法提取和修改事務(wù)T將數(shù)據(jù)X從數(shù)據(jù)庫中提取出來,保存在臨時副本中事務(wù)T對數(shù)據(jù)X所做的所有修改都保存在臨時副本中提取和修改事務(wù)T將數(shù)據(jù)X從數(shù)據(jù)庫中提取出來,保存在臨時
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店資產(chǎn)投資與經(jīng)營管理合伙協(xié)議書二零二五
- 二零二五年度私人住宅裝修工人安全責任合同
- 2025年度海洋資源開發(fā)橫向課題執(zhí)行協(xié)議
- 二零二五年度小程序游戲運營合作協(xié)議
- 2025年度電子元器件采購合同主要內(nèi)容簡述
- 二零二五年度購房合同定金支付及變更協(xié)議書
- 2025年度酒店員工勞動權(quán)益保障合同
- 二零二五年度綠色建筑股權(quán)協(xié)議及合伙人合作開發(fā)協(xié)議
- 2025年度美發(fā)店員工工傷事故處理勞動合同
- 空調(diào)安裝工勞動合同
- DeepSeek零基礎(chǔ)到精通手冊(保姆級教程)
- 瓷磚鋪貼勞務(wù)承包協(xié)議書
- 2025年四川司法警官職業(yè)學院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 新建污水處理廠工程EPC總承包投標方案(技術(shù)標)
- 柔性電路板自動化制造-深度研究
- 2024年河南建筑職業(yè)技術(shù)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 《宏觀經(jīng)濟管理研究》課件
- 蘇教版五年級下冊數(shù)學全冊教案設(shè)計
- 曲臂車作業(yè)安全技術(shù)交底
- 2025年安徽合肥市公安局經(jīng)開分局輔警招聘58人歷年高頻重點提升(共500題)附帶答案詳解
- 小學五年級地方課程《話說溫州》教學計劃
評論
0/150
提交評論