數(shù)據(jù)庫-事務處理技術_第1頁
數(shù)據(jù)庫-事務處理技術_第2頁
數(shù)據(jù)庫-事務處理技術_第3頁
數(shù)據(jù)庫-事務處理技術_第4頁
數(shù)據(jù)庫-事務處理技術_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

事務處理技術事務是一系列的數(shù)據(jù)庫操作,是數(shù)據(jù)庫應用程序的基本邏輯單元。(一個存取或更改數(shù)據(jù)庫的程序的運行)事務處理技術

1、并發(fā)控制技術:用來控制多個事務的并行運行,避免它們之間的相互干擾,保證每個事務都產(chǎn)生正確的結果。2、數(shù)據(jù)庫恢復技術:用來進行系統(tǒng)失敗后的恢復處理,確保數(shù)據(jù)庫能夠恢復到正確的狀態(tài)。

并發(fā)控制技術并發(fā)控制概述1事務模型2基于鎖的并發(fā)控制協(xié)議3時間印協(xié)議4并發(fā)控制概述數(shù)據(jù)庫系統(tǒng)一般可以分為單用戶和多用戶系統(tǒng)兩種。

在任何一個時刻只允許一個用戶使用的數(shù)據(jù)庫系統(tǒng)稱為單用戶數(shù)據(jù)庫系統(tǒng)。允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)稱為多用戶數(shù)據(jù)庫系統(tǒng)。多數(shù)數(shù)據(jù)庫系統(tǒng)都是多用戶系統(tǒng)。例如飛機訂票數(shù)據(jù)庫系統(tǒng)、銀行數(shù)據(jù)庫系統(tǒng)等。并發(fā)控制的必要性在一個多用戶數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)庫中存儲的數(shù)據(jù)項是用戶程序存取的基本信息資源。并發(fā)操作:多個事務可同時運行并同時要求存取或修改同一個數(shù)據(jù)庫記錄。如果不對并發(fā)運行的事務加以適當?shù)目刂疲瑫鸷芏鄦栴}。以飛機訂座數(shù)據(jù)庫系統(tǒng)為例:–每個航班對應一個數(shù)據(jù)庫記錄。每個記錄包括對應航班已經(jīng)預訂的座位數(shù)和一些其它信息。–設X和Y分別是航班A1和A2對應的數(shù)據(jù)庫記錄。(X=80,M=4,N=5)–事務T1取消航班A1上已經(jīng)預訂的N個座位,并為航班A2增加N個預訂座位:?READ(X);?X:=X-N;?WRITE(X);?READ(Y);?Y:=Y+N;?WRITE(Y)。–事務T2為航班A1增加M個座位:?READ(X);

?X:=X+M;

?WRITE(X)。?數(shù)據(jù)更新丟失問題?臨時值問題?錯誤聚集計算問題事務模型一個存取或更改數(shù)據(jù)庫的程序的運行稱為數(shù)據(jù)庫事務,簡稱事務。事務是數(shù)據(jù)庫應用程序的基本邏輯單位。事務的特性需要由數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制和數(shù)據(jù)庫恢復機制來保證。原子性:事務是數(shù)據(jù)庫系統(tǒng)運行的原子程序單元。每個事務的所有操作要么被全部成功地執(zhí)行,要么一個也不被執(zhí)行。數(shù)據(jù)庫正確保持性:一個事務的正確執(zhí)行必須把數(shù)據(jù)庫從一個正確狀態(tài)轉換為另一個正確狀態(tài)。操作結果永久保持性:如果一個事務使數(shù)據(jù)庫發(fā)生了改變,而且該事務已經(jīng)進入提交狀態(tài),則這些改變將不會因以后的失敗而丟失。

事務的特性獨立性:一個事務在進入提交狀態(tài)之前,它對數(shù)據(jù)庫的更新不可由其他事務讀取。這個性質避免了臨時值問題,也避免了嵌套回滾處理問題。一般地,不同的并發(fā)控制和數(shù)據(jù)庫恢復方法要求不同級別的獨立性。可串行性并發(fā)運行的多個事務的運行效果與這些事務按某種次序順序運行的效要相同??纱行允歉鞣N并發(fā)控制方法所要求的關鍵性質。保證事務的原子性是數(shù)據(jù)庫恢復機制的責任。銀行中兩個賬戶之間轉帳的例子,即從賬戶A轉X元到帳戶B,它同時涉及到兩個不同帳戶的讀寫操作。事務中涉及數(shù)據(jù)庫訪問的基本操作:⑴read(X):從數(shù)據(jù)庫傳送數(shù)據(jù)項X到執(zhí)行read操作的事務的一個局部緩沖區(qū)中;⑵write(X):從執(zhí)行write事務的局部緩沖區(qū)中把數(shù)據(jù)項X傳回數(shù)據(jù)庫。事務之間的相互影響Ti:假設A的初始值為2000,Tjread(A)B的初始值為3000。read(A)A:=A-500read(B)write(A)X:=A+Bread(B)write(X)B:=B+500 write(B)

原子性

如果事務沒有原子性的保證,那么在發(fā)生系統(tǒng)故障的情況下,數(shù)據(jù)庫就有可能處于不一致狀態(tài)。值得注意的是,即使沒有故障發(fā)生,系統(tǒng)在某一時刻也會處于不一致狀態(tài)。原子性的要求就是這種不一致狀態(tài)除了在事務執(zhí)行當中出現(xiàn)外,在其他任何時刻都是不可見的。保證原子性是DBMS的責任:即事務管理器和恢復管理器的責任。數(shù)據(jù)庫正確保持性簡單地說就是數(shù)據(jù)庫中數(shù)據(jù)的完整性,包括它們的正確性。對于圖中的事務Ti來說,一致性要求就是事務的執(zhí)行不改變賬戶A和賬戶B的和。否則的話事務就會創(chuàng)造或銷毀錢!單個事務的一致性是由對該事務進行編碼的應用程序員的責任,但是在某些情況下利用DBMS中完整性約束的自動檢查功能有助于一致性的維護。操作結果永久保持性

持久性的含義是說:一旦事務成功執(zhí)行之后,它對數(shù)據(jù)庫的更新是永久的??梢杂靡韵聝煞N方式中的任何一種來達到持久性的目的:⑴以犧牲應用系統(tǒng)的性能為代價:要求事務對數(shù)據(jù)庫系統(tǒng)所做的更新在事務結束前已經(jīng)寫入磁盤;操作結果永久保持性⑵以多占用磁盤空間為代價:要求事務已經(jīng)執(zhí)行的和以寫到磁盤的、對數(shù)據(jù)庫進行更新的信息是充分的(例如,數(shù)據(jù)庫日志的信息就足夠的多),使得DBMS在系統(tǒng)出現(xiàn)故障后重新啟動系統(tǒng)時,能夠(根據(jù)日志)重新構造更新。保證持久性也是DBMS的責任:即恢復管理器的責任。獨立性

⑴事情的起因如圖所示,即使每個事務都能保持一致性和原子性,但如果幾個事務并發(fā)執(zhí)行,且訪問相同的數(shù)據(jù)項,則它們的操作會以人們所不希望的某種方式交叉執(zhí)行,結果導致不一致的狀態(tài)!獨立性

Ti:訪問相同數(shù)據(jù)項ATj:read(A)和B的兩個事務的read(A)A:=A-5并發(fā)執(zhí)行read(B)write(A)X:=A+Bread(B)write(X)B:=B+500 write(B)

訪問相同數(shù)據(jù)項的兩個事務并發(fā)執(zhí)行獨立性⑵解決辦法如果幾個事務要訪問相同的數(shù)據(jù)項,為了保證數(shù)據(jù)庫的一致性,可以讓這幾個事務:①串行執(zhí)行:即一個接著一個地執(zhí)行事務;②并發(fā)執(zhí)行:即同時執(zhí)行多個事務,但用并發(fā)控制機制來解決不同事務間的相互影響。⑶獨立性的保證事務的隔離性能夠確保事務并發(fā)執(zhí)行后的系統(tǒng)狀態(tài)與這些事務安某種次序串行執(zhí)行后的狀態(tài)是等價的。保證獨立性也是DBMS的責任:即并發(fā)控制管理器的責任。

事務調度與可串行性事務的調度:定義:N個事務的一個調度S是N個事務的所有操作的一個序列,表示這些操作的執(zhí)行順序,并且滿足對于N個事務中的每個事務T,如果操作i在T中先于操作j執(zhí)行,則在S中操作i也必須先于操作j執(zhí)行。多個事務的調度保持每個事務的操作在該事務中的順序不變。但是,不同事務的操作可以交叉執(zhí)行。一個事務的所有操作都執(zhí)行完后才執(zhí)行完后才執(zhí)行另一個事務的所有操作。我們稱這樣的調度為串行調度,表示事務的串行運行。稱其他類型的調度為并行調度。調度的可串行性對于N個事務來說,有N!個串行調度。由于N個事務可以有很多種并行調度,N個事務的調度個數(shù)遠大于N!。調度的可串行性N個事務S是可串行的,如果S等價于一個串行調度。串行調度一定產(chǎn)生正確的運行結果,而并行調度可能產(chǎn)生不正確的事務運行結果。一個并行調度等價于一個串行調度意味著并行調度是正確的。基于鎖的并發(fā)控制協(xié)議一個保證可串行性的方法是在互斥的方式下存取數(shù)據(jù)項,即當一個事務存取一個數(shù)據(jù)項時,不允許其他事務修改這個數(shù)據(jù)項鎖的概念鎖是數(shù)據(jù)項上的并發(fā)控制標志(1)共享鎖:如果事務T得到了數(shù)據(jù)項Q上的共享鎖,則T可以讀這個數(shù)據(jù)項,但不能寫這個數(shù)據(jù)項。共享鎖表示為S.(2)互斥鎖:如果事務T得到了數(shù)據(jù)項Q上的互斥鎖,則T既可以讀這個數(shù)據(jù)項,也可以寫這個數(shù)據(jù)項?;コ怄i表示為X.鎖的概念每個事務在存取一個數(shù)據(jù)項之前必須獲得這個數(shù)據(jù)項上的鎖。一個事務需要獲得的鎖的類型依賴于它將在數(shù)據(jù)項上執(zhí)行什么樣的操作。給定一個各種類型鎖的集合,可以如下定義這個鎖集合上的相容關系。令A和B表示任意類型的鎖。設事務Ti在數(shù)據(jù)項Q上要求一個A型鎖,事務Tj(Ti≠Tj)已經(jīng)在Q上有一個B型鎖。如果事務Ti能夠獲得Q上的A型鎖,則說A型鎖和B型鎖是相容。鎖相容矩陣SXStruefalseXfalsefalse申請數(shù)據(jù)項Q上的共享鎖

LOCK-S(Q)申請數(shù)據(jù)項Q上的互斥鎖

LOCK-X(Q)釋放數(shù)據(jù)項Q上的鎖

UNLOCK(Q)銀行數(shù)據(jù)庫系統(tǒng)的例子設A和B是兩個賬號。定義兩個事務T7和T8。T7從賬號B向賬號A轉50元,T8顯示賬號A和B的總金額。(設A和B的值分別是100和300元)。T7和T8定義如下:T7:LOCK-X(B);T8:LOCK-S(A);READ(B);READ(A);B:=B-50;UNLOCK(A);WRITE(B);LOCK-S(B);UNLOCK(B);READ(B);LOCK-X(A);UNLOCK(B);READ(A);DISPLAY(A+B);A:=A+50;WRITE(A);串行執(zhí)行<T7,T8>或<T8,T7>UNLOCK(A);T8顯示300元并發(fā)執(zhí)行T7:LOCK-X(B);T8:READ(B);B:=B-50;WRITE(B);UNLOCK(B);LOCK-S(A);READ(A);UNLOCK(A);LOCK-S(B);READ(B);UNLOCK(B);DISPLAY(A+B);LOCK-X(A);READ(A);A:=A+50;WRITE(A);UNLOCK(A);T8顯示250元,T8看到的是一個不一致的數(shù)據(jù)庫狀態(tài).修改T7和T8得到,T9和T10T9:LOCK-X(B);T10:LOCK-S(A);READ(B);READ(A);B:=B-50;READ(B);WRITE(B);LOCK-X(A);READ(A);UNLOCK(A);A:=A+50;UNLOCK(B);WRITE(A);DISPLAY(A+B);UNLOCK(B);UNLOCK(A);一個處于死鎖狀態(tài)的調度T9:LOCK-X(B);T10:READ(B);B:=B-50;WRITE(B);

LOCK-S(A);READ(A);LOCK-S(B);LOCK-X(A);應該謹慎地使用鎖.如果為了獲得最大的并發(fā)性而盡早地釋放數(shù)據(jù)項的鎖,可能導致不一致的數(shù)據(jù)庫狀態(tài).如果在申請其它鎖之前不盡量地釋放已擁有的鎖,則可能導致死鎖.要求系統(tǒng)中每個事務在加鎖或釋放鎖時都必須遵循一組規(guī)則.這組規(guī)則稱為鎖協(xié)議.它規(guī)定了事務對每個數(shù)據(jù)項加鎖和釋放鎖的時機.兩階段鎖協(xié)議兩階段鎖協(xié)議要求每個事務分兩個階段進行數(shù)據(jù)項的加鎖和解鎖階段1加鎖階段.事務可以申請獲得任何數(shù)據(jù)向上的任何類型的鎖,但是不能釋放任何鎖.階段2解鎖階段.事務可以釋放任何數(shù)據(jù)向上的任何類型的鎖,但是不能再申請任何鎖.第13章數(shù)據(jù)庫恢復技術

影子頁面技術5緩沖技術3使用日志的數(shù)據(jù)庫恢復技術2數(shù)據(jù)庫恢復的必要性1檢測點4第13章數(shù)據(jù)庫恢復技術盡管數(shù)據(jù)庫系統(tǒng)中采取了各種保護措施來防止數(shù)據(jù)庫的安全性和完整性被破壞,保證并發(fā)事務的正確執(zhí)行,但是計算機系統(tǒng)中的硬件的故障、軟件的錯誤、操作員的失誤以及惡意的破壞仍是不可避免的。這些故障輕則造成運行事務非正常中斷,影響數(shù)據(jù)庫中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫,使數(shù)據(jù)庫中全部或部分數(shù)據(jù)丟失,因此DBMS必須具有把數(shù)據(jù)庫從錯誤狀態(tài)恢復到某一已知的正確狀態(tài)(亦稱為一致狀態(tài))的功能,這就是數(shù)據(jù)庫的恢復?;謴妥酉到y(tǒng)是DBMS的一個重要組成部分,而且還相當龐大,常常占整個系統(tǒng)代碼的10%以上。DBMS所采用的恢復技術是否行之有效,不僅對系統(tǒng)的可靠程度起著決定性作用,而且對系統(tǒng)的運行效率也有很大影響,是衡量系統(tǒng)性能優(yōu)劣的重要指標。數(shù)據(jù)庫恢復的必要性數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫恢復機制的目的:

保證事務的原子性,當系統(tǒng)發(fā)生故障后,數(shù)據(jù)庫能夠恢復到正確狀態(tài)。破壞事務原子性和引起系統(tǒng)故障的原因主要有以下幾種:

(1)計算機系統(tǒng)故障

(2)事務或系統(tǒng)故障

(3)事務的強行終止

(4)磁盤故障

(5)其他原因數(shù)據(jù)庫的存儲設備按其存取速度、容量和故障可恢復性分為三種:

(1)非永久存儲器

(2)永久存儲器

(3)永恒存儲器本章討論的數(shù)據(jù)庫恢復技術以上述三種存儲器為基礎。同時,這些技術僅適用于如下4種類型的故障:(1)邏輯錯誤由事務內(nèi)部的錯誤引起的事務無法正常運行(2)系統(tǒng)錯誤系統(tǒng)進入異常狀態(tài)引起的事務不能正常運行,如死鎖等(3)硬件故障硬件發(fā)生故障,但外存信息保持完整(4)磁盤故障由磁盤硬件故障引起的磁盤信息的丟失使用日志的數(shù)據(jù)庫恢復技術當系統(tǒng)恢復正常以后,可能選擇如下的兩種方法之一進行數(shù)據(jù)庫恢復:

(1)重新運行事務T。

(2)不再運行事務T。為了保證事務的原子性,在執(zhí)行一個數(shù)據(jù)庫更新操作時,可以首先把描述更新操作的信息寫入永恒存儲器,而不修改數(shù)據(jù)庫本身。當事務提交時,在使用永恒存儲器中存儲的更新操組信息實現(xiàn)數(shù)據(jù)庫的更新。數(shù)據(jù)庫系統(tǒng)日志記錄有關事務的數(shù)據(jù)庫操作信息的存儲結構是數(shù)據(jù)庫系統(tǒng)日志,簡稱日志。每個日志記錄描述一個數(shù)據(jù)庫寫操作,與WRITE(Q)對應的日志記錄具有如下的數(shù)據(jù)域:(1)事務名執(zhí)行WRITE(Q)操作的事務名(2)數(shù)據(jù)項名Q的唯一名字(3)原始值Q在執(zhí)行WRITE(Q)之前的值(4)新值Q在執(zhí)行WRITE(Q)之后的值日志中還包含其他結構的記錄,記載事務處理過程中的重要事件。以后將使用如下的表示法表示各種總類型的日志記錄:(1)<T,start>事務T已經(jīng)開始。(2)<T,X,V1,V2>事務T在數(shù)據(jù)項X上執(zhí)行寫操作。X在執(zhí)行寫操作之前的值為V1,執(zhí)行寫操作之后的值為V2。(3)<mit>事務T已經(jīng)提交。當一個事務執(zhí)行完一個寫操作WRITE(Q)時,就應該在數(shù)據(jù)庫被修改之前建立起描述這個寫操作的日志記錄。數(shù)據(jù)庫系統(tǒng)日志推遲更新技術為了保證日志在系統(tǒng)和磁盤發(fā)生故障時仍可使用,必須將它存儲在永恒存儲器上。為了保證事務的原子性,在每個事務運行期間,推遲更新技術在日志中記錄這個事務對數(shù)據(jù)庫的所有更新操作,把所有數(shù)據(jù)庫更新操作推遲到該事務提交時執(zhí)行。推遲更新技術必須遵循下述推遲更新協(xié)議:推遲更新技術(1)每個事務在到達提交點之前不能更新數(shù)據(jù)庫。(2)在一個事務的所有更新操作對應的日志記錄寫入永恒存儲器之前,該事務不能到達提交點。數(shù)據(jù)庫恢復機制中使用日志,可以處理任何導致非永久存儲器的信息丟失問題。當系統(tǒng)故障發(fā)生后,數(shù)據(jù)庫恢復機制將考察日志,確定需要重做的事務T。事務T需要重做當且僅當日志包含記錄<T,starts>和<mits>.推遲更新技術如果系統(tǒng)在事務T成功完成之后發(fā)生故障,日志中有關T的信息將被用來將數(shù)據(jù)庫恢復到正確狀態(tài)。每當系統(tǒng)發(fā)生故障后,數(shù)據(jù)庫恢復機制都要調用這個過程實現(xiàn)數(shù)據(jù)庫的恢復。這個過程定義如下:(1)從后向前掃描日志記錄,建立兩個事務表。一個表稱為提交事務表,包含全部具有日志記錄<mits>的事務T,即已提交的事務;另一個表稱為未提交事務表,包括全部具有日志記錄<T,starts>,但不具有日志記錄<mits>的事務T,即尚未提交的事務。推遲更新技術(2)對于提交事務表中的每個事務T,執(zhí)行REDO(T)。(3)對于未提交的事務表中的每個事務,刪除所有T的日志記錄,放棄T,待以后重新啟動執(zhí)行。即時更新技術即時更新技術允許事務直接更新數(shù)據(jù)庫。處于活動狀態(tài)的事務直接在數(shù)據(jù)庫上實施的更新稱為非提交更新。任何即時更新技術都必須遵循如下的即時更新協(xié)議:即時更新技術(1)在所有<T,X,V1,V2>型日志記錄安全地存儲到永恒存儲器之前,事務T不能更新數(shù)據(jù)庫。(2)在所有<T,X,V1,V2>型日志記錄安全地存儲到永恒存儲器之前,不允許事務T提交。即時更新技術需要如下兩個操作:(1)UNDO(T)FOR日志中每個形如<T,X,V1,V2>的記錄DO把數(shù)據(jù)庫中數(shù)據(jù)項X的值改為V1;ENDFOR

即時更新技術(2

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論