版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫事務與并發(fā)控制事務的基本概念三個并發(fā)問題并發(fā)控制:鎖以及三級封鎖協議死鎖可串行性和兩段鎖協議數據庫事務與并發(fā)控制事務的基本概念1事務的基本概念所謂事務是用戶定義的一個操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。
事務有兩種一種是顯式事物,另一種是隱式事物。隱式事務是指每一條數據操作語句都自動地成為一個事物顯式事務是指有顯式的開始和結束標記的事物。事務的基本概念所謂事務是用戶定義的一個操作序列,這些操作要么2顯示事務的SQL定義BEGINTRANSACTIONCOMMITROLLBACK在SQL語言中,定義事務的語句有三條:事務通常是以BEGINTRANSACTION開始,以COMMIT或ROLLBACK結束。COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對數據庫的更新寫回到磁盤上的物理數據庫中去,事務正常結束。ROLLBACK表示回滾,即在事務運行的過程中發(fā)生了某種故障,事務不能繼續(xù)執(zhí)行,系統(tǒng)將事務中對數據庫的所有已完成的操作全部撤消,滾回到事務開始時的狀態(tài)。這里的操作指對數據庫的更新操作。顯示事務的SQL定義BEGINTRANSACTION在SQ3事務的特性原子性
事務是數據庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做。一致性
事務執(zhí)行的結果必須是使數據庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。因此當數據庫只包含成功事務提交的結果時,就說數據庫處于一致性狀態(tài)。如果數據庫系統(tǒng)運行中發(fā)生故障,有些事務尚未完成就被迫中斷,系統(tǒng)將事務中對數據庫的所有已完成的操作全部撤消,滾回到事務開始時的一致狀態(tài)。
隔離性
一個事務的執(zhí)行不能被其他事務干擾。即一個事務內部的操作及使用的數據對其他并發(fā)事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
持續(xù)性
持續(xù)性也稱永久性(Permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其執(zhí)行結果有任何影響。
事務的特性原子性
事務是數據庫的邏輯工作單位,事務中包括4事務是恢復和并發(fā)控制的基本單位保證事務ACID特性是事務處理的重要任務。事務ACID特性可能遭到破壞的因素有:
多個事務并行運行時,不同事務的操作交叉執(zhí)行。事務在運行過程中被強行停止。
在第一種情況下,數據庫管理系統(tǒng)必須保證多個事務的交叉運行不影響這些事務的原子性。在第二種情況下,數據庫管理系統(tǒng)必須保證被強行終止的事務對數據庫和其它事務沒有任何影響。
這些就是數據庫管理系統(tǒng)中恢復機制和并發(fā)控制機制的責任。事務是恢復和并發(fā)控制的基本單位保證事務ACID特性是事務處理5三個并發(fā)問題丟失更新問題未提交依賴問題不一致分析問題三個并發(fā)問題丟失更新問題6丟失更新問題事務A在時間t1檢索元組t;事務B在時間t2檢索同一元組t;事務A在時間t3更新元組t(基于時間t1所看到的值);事務B在時間t4更新元組t(基于時間t2所看到的值,與t1時間的值相同)。事務A的更新在t4時間丟失,因為事務B甚至都沒看它就將其覆蓋了。丟失更新問題事務A在時間t1檢索元組t;事務B在時間t27未提交依賴問題如果一個事務允許檢索,或更糟糕的是,更新一個已被其他事務更新但未提交的元組,這將引起未提交依賴問題。因為如果事務尚未提交,總有可能其將不再提交而是回滾,這種情況下,第一個事務所看到的數據當前并不存在,某種意義上,從未存在過未提交依賴問題如果一個事務允許檢索,或更糟糕的是,更新一個已8不一致分析問題事務A對帳戶余額進行求和,事務B將帳戶3的金額10轉到帳戶1上。A產生的結果為110,顯然不正確。如果A將該結果寫回到數據庫,實際上將使數據庫處于不一致的狀態(tài)。事務A看到了數據庫的不一致的狀態(tài),并因此進行了不一致的分析。注意該例與前例的不同:這里不存在A依賴未提交的更新問題,因為B在A看到ACC3前已提交了所有更新。不一致分析問題事務A對帳戶余額進行求和,事務B將帳戶3的金額9并發(fā)控制并發(fā)控制:用正確的方式調度并發(fā)操作,使一個用戶事務的執(zhí)行不受其它事務的干擾,從而避免造成數據的不一致性。并發(fā)控制的主要技術是封鎖(locking).如在飛機訂票例子中,甲事務要修改A,若在讀出A前先鎖住A,其它事務不能再讀取和修改A,直到甲修改并寫回A后解除了對A的封鎖為止。這樣甲就不會丟失修改。事務T在對某個數據對象如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后T對數據對象有一定的控制(具體的控制由封鎖類型決定),在事務T釋放前,其它事務不能更新此數據對象。并發(fā)控制并發(fā)控制:用正確的方式調度并發(fā)操作,使一個用戶事務的10鎖的分類排它鎖(X鎖、寫鎖)
若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務不能對A加任何類型的鎖,直到T釋放A上的鎖。從而保證其它事務在T釋放A上的鎖前不能再讀取和修改A。
共享鎖(S鎖、讀鎖)
T對數據對象A加上S鎖,則T可以讀A但不能修改A,其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。保證了在T對A加S鎖過程中其它事務對A只能讀,不能修改。鎖的分類排它鎖(X鎖、寫鎖)
若事務T對數據對象A加上X鎖11封鎖協議一級封鎖協議二級封鎖協議三級封鎖協議在運用X鎖和S鎖對數據對象加鎖時,需要遵循的規(guī)則(如何時申請X鎖或S鎖、持鎖時間、何時釋放等),這些規(guī)則即為封鎖協議。
對封鎖方式規(guī)定不同的規(guī)則即形成了各種不同的封鎖協議,不同級別的封鎖協議分別在不同程度上解決一定程度的一致性問題。封鎖協議在運用X鎖和S鎖對數據對象加鎖時,需要遵循的12一級封鎖協議事務T在修改數據R之前必須先對其加X鎖,直到事務結束(即通過commit和rollback結束)才釋放。
作用:防止丟失修改,保證事務T可恢復。一級封鎖協議事務T在修改數據R之前必須先對其加X鎖,直到事務13二級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完后即可釋放S鎖。
作用:防止丟失修改及讀“臟”數據二級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對14三級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
作用:防止丟失修改,防止讀“臟”數據以及防止不可重復讀三級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對15封鎖協議比較三個級別的封鎖協議的主要區(qū)別在于什么操作需要申請封鎖,以及何時釋放鎖(即持鎖時間)。三個級別的封鎖協議可以總結為下表:封鎖協議比較三個級別的封鎖協議的主要區(qū)別在于什么操作需要申請16死鎖圖中的r1和r2(r表示資源)表示任何可鎖的對象,不必僅為數據庫的元組,語句“LOCK...EXCLUSIVE”表示任何申請(排它)鎖的操作。死鎖發(fā)生時兩個或更多的事務同時處于等待狀態(tài),每個事務都在等待其它的事務釋放鎖使其可繼續(xù)執(zhí)行。死鎖圖中的r1和r2(r表示資源)表示任何可鎖的對象,不17死鎖的解除死鎖發(fā)生時,系統(tǒng)必須能檢測并解除它。檢測死鎖就是檢測等待圖(即“誰在等待誰”)中的環(huán)。解除死鎖就是選出一個死鎖的事務,即圖中環(huán)上的一個事務,將之回滾,從而釋放其所擁有的鎖使得其他一些事務可繼續(xù)執(zhí)行下去。注意:實際上,并不是所有的系統(tǒng)都進行死鎖檢測,有些系統(tǒng)采用超時機制,簡單地假設在預定時間內不工作的事務發(fā)生了死鎖。死鎖的解除死鎖發(fā)生時,系統(tǒng)必須能檢測并解除它。檢測死鎖就是檢18并發(fā)調度的可串行性串行調度——多個事務依次執(zhí)行并行調度——分時法同時處理多個事務可串行性(Serializable):當且僅當多個事務的并發(fā)調度結果與按某一次次序串行調度時的結果相同。并發(fā)調度的可串行性串行調度——多個事務依次執(zhí)行19兩段鎖協議實現可串行性規(guī)定所有事務都必須分為兩個階段對數據項加鎖和解鎖:在對任何一個對象(如一個數據庫元組)進行操作之前,事務必須獲得對該對象的鎖。在釋放一個鎖之后,事務不再獲得任何其他鎖。遵守該協議的事務分為兩個階段:獲得鎖階段,也稱為“擴展”階段;釋放鎖階段,也稱為“收縮”階段。注意:實際系統(tǒng)中收縮階段通常被壓縮為事務結束時的單個操作COMMIT或ROLLBACK。兩段鎖協議實現可串行性規(guī)定所有事務都必須分為兩個階段對數據項20數據庫事務與并發(fā)控制事務的基本概念三個并發(fā)問題并發(fā)控制:鎖以及三級封鎖協議死鎖可串行性和兩段鎖協議數據庫事務與并發(fā)控制事務的基本概念21事務的基本概念所謂事務是用戶定義的一個操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。
事務有兩種一種是顯式事物,另一種是隱式事物。隱式事務是指每一條數據操作語句都自動地成為一個事物顯式事務是指有顯式的開始和結束標記的事物。事務的基本概念所謂事務是用戶定義的一個操作序列,這些操作要么22顯示事務的SQL定義BEGINTRANSACTIONCOMMITROLLBACK在SQL語言中,定義事務的語句有三條:事務通常是以BEGINTRANSACTION開始,以COMMIT或ROLLBACK結束。COMMIT表示提交,即提交事務的所有操作。具體地說就是將事務中所有對數據庫的更新寫回到磁盤上的物理數據庫中去,事務正常結束。ROLLBACK表示回滾,即在事務運行的過程中發(fā)生了某種故障,事務不能繼續(xù)執(zhí)行,系統(tǒng)將事務中對數據庫的所有已完成的操作全部撤消,滾回到事務開始時的狀態(tài)。這里的操作指對數據庫的更新操作。顯示事務的SQL定義BEGINTRANSACTION在SQ23事務的特性原子性
事務是數據庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做。一致性
事務執(zhí)行的結果必須是使數據庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。因此當數據庫只包含成功事務提交的結果時,就說數據庫處于一致性狀態(tài)。如果數據庫系統(tǒng)運行中發(fā)生故障,有些事務尚未完成就被迫中斷,系統(tǒng)將事務中對數據庫的所有已完成的操作全部撤消,滾回到事務開始時的一致狀態(tài)。
隔離性
一個事務的執(zhí)行不能被其他事務干擾。即一個事務內部的操作及使用的數據對其他并發(fā)事務是隔離的,并發(fā)執(zhí)行的各個事務之間不能互相干擾。
持續(xù)性
持續(xù)性也稱永久性(Permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其執(zhí)行結果有任何影響。
事務的特性原子性
事務是數據庫的邏輯工作單位,事務中包括24事務是恢復和并發(fā)控制的基本單位保證事務ACID特性是事務處理的重要任務。事務ACID特性可能遭到破壞的因素有:
多個事務并行運行時,不同事務的操作交叉執(zhí)行。事務在運行過程中被強行停止。
在第一種情況下,數據庫管理系統(tǒng)必須保證多個事務的交叉運行不影響這些事務的原子性。在第二種情況下,數據庫管理系統(tǒng)必須保證被強行終止的事務對數據庫和其它事務沒有任何影響。
這些就是數據庫管理系統(tǒng)中恢復機制和并發(fā)控制機制的責任。事務是恢復和并發(fā)控制的基本單位保證事務ACID特性是事務處理25三個并發(fā)問題丟失更新問題未提交依賴問題不一致分析問題三個并發(fā)問題丟失更新問題26丟失更新問題事務A在時間t1檢索元組t;事務B在時間t2檢索同一元組t;事務A在時間t3更新元組t(基于時間t1所看到的值);事務B在時間t4更新元組t(基于時間t2所看到的值,與t1時間的值相同)。事務A的更新在t4時間丟失,因為事務B甚至都沒看它就將其覆蓋了。丟失更新問題事務A在時間t1檢索元組t;事務B在時間t227未提交依賴問題如果一個事務允許檢索,或更糟糕的是,更新一個已被其他事務更新但未提交的元組,這將引起未提交依賴問題。因為如果事務尚未提交,總有可能其將不再提交而是回滾,這種情況下,第一個事務所看到的數據當前并不存在,某種意義上,從未存在過未提交依賴問題如果一個事務允許檢索,或更糟糕的是,更新一個已28不一致分析問題事務A對帳戶余額進行求和,事務B將帳戶3的金額10轉到帳戶1上。A產生的結果為110,顯然不正確。如果A將該結果寫回到數據庫,實際上將使數據庫處于不一致的狀態(tài)。事務A看到了數據庫的不一致的狀態(tài),并因此進行了不一致的分析。注意該例與前例的不同:這里不存在A依賴未提交的更新問題,因為B在A看到ACC3前已提交了所有更新。不一致分析問題事務A對帳戶余額進行求和,事務B將帳戶3的金額29并發(fā)控制并發(fā)控制:用正確的方式調度并發(fā)操作,使一個用戶事務的執(zhí)行不受其它事務的干擾,從而避免造成數據的不一致性。并發(fā)控制的主要技術是封鎖(locking).如在飛機訂票例子中,甲事務要修改A,若在讀出A前先鎖住A,其它事務不能再讀取和修改A,直到甲修改并寫回A后解除了對A的封鎖為止。這樣甲就不會丟失修改。事務T在對某個數據對象如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后T對數據對象有一定的控制(具體的控制由封鎖類型決定),在事務T釋放前,其它事務不能更新此數據對象。并發(fā)控制并發(fā)控制:用正確的方式調度并發(fā)操作,使一個用戶事務的30鎖的分類排它鎖(X鎖、寫鎖)
若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務不能對A加任何類型的鎖,直到T釋放A上的鎖。從而保證其它事務在T釋放A上的鎖前不能再讀取和修改A。
共享鎖(S鎖、讀鎖)
T對數據對象A加上S鎖,則T可以讀A但不能修改A,其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。保證了在T對A加S鎖過程中其它事務對A只能讀,不能修改。鎖的分類排它鎖(X鎖、寫鎖)
若事務T對數據對象A加上X鎖31封鎖協議一級封鎖協議二級封鎖協議三級封鎖協議在運用X鎖和S鎖對數據對象加鎖時,需要遵循的規(guī)則(如何時申請X鎖或S鎖、持鎖時間、何時釋放等),這些規(guī)則即為封鎖協議。
對封鎖方式規(guī)定不同的規(guī)則即形成了各種不同的封鎖協議,不同級別的封鎖協議分別在不同程度上解決一定程度的一致性問題。封鎖協議在運用X鎖和S鎖對數據對象加鎖時,需要遵循的32一級封鎖協議事務T在修改數據R之前必須先對其加X鎖,直到事務結束(即通過commit和rollback結束)才釋放。
作用:防止丟失修改,保證事務T可恢復。一級封鎖協議事務T在修改數據R之前必須先對其加X鎖,直到事務33二級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完后即可釋放S鎖。
作用:防止丟失修改及讀“臟”數據二級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對34三級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
作用:防止丟失修改,防止讀“臟”數據以及防止不可重復讀三級封鎖協議
一級封鎖協議加上事務T在讀取數據R之前必須先對35封鎖協議比較三個級別的封鎖協議的主要區(qū)別在于什么操作需要申請封鎖,以及何時釋放鎖(即持鎖時間)。三個級別的封鎖協議可以總結為下表:封鎖協議比較三個級別的封鎖協議的主要區(qū)別在于什么操作需要申請
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026自然語言處理工程師招聘面試題及答案
- 沖床鉆孔加工試題及答案
- 2026黑龍江哈爾濱啟航勞務派遣有限公司派遣到哈爾濱工業(yè)大學機電工程學院機械設計系招聘考試備考題庫附答案
- 中共南充市委社會工作部關于公開招聘南充市新興領域黨建工作專員的(6人)考試備考題庫附答案
- 中國科學院西北高原生物研究所2026年支撐崗位招聘1人(青海)備考題庫必考題
- 會昌縣2025年縣直事業(yè)單位公開選調一般工作人員考試備考題庫附答案
- 北京市大興區(qū)司法局招聘臨時輔助用工1人參考題庫必考題
- 常州經濟開發(fā)區(qū)人民檢察院公開招聘司法警察輔助人員3人參考題庫附答案
- 成都市公安局龍泉驛區(qū)分局2025年公開招聘警務輔助人員(40人)考試備考題庫附答案
- 揭陽市2025年度市直單位公開遴選公務員23人參考題庫附答案
- 施工總平面布置圖范本
- 嬰幼兒輔食添加及食譜制作
- 安全生產標準化對企業(yè)的影響安全生產
- 關于若干歷史問題的決議(1945年)
- 畢業(yè)論文8000字【6篇】
- 隨訪管理系統(tǒng)功能參數
- SH/T 0362-1996抗氨汽輪機油
- GB/T 23280-2009開式壓力機精度
- GB/T 17213.4-2015工業(yè)過程控制閥第4部分:檢驗和例行試驗
- FZ/T 73009-2021山羊絨針織品
- GB∕T 5900.2-2022 機床 主軸端部與卡盤連接尺寸 第2部分:凸輪鎖緊型
評論
0/150
提交評論