《分布式數(shù)據(jù)庫中的事務管理和恢復》由會員分享,可在線閱讀,更多相關《分布式數(shù)據(jù)庫中的事務管理和恢復(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,*,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,分布式事務概述,分布式事務的執(zhí)行與恢復,兩階段提交協(xié)議,分布式數(shù)據(jù)庫中的數(shù)據(jù)更新,分布式事務增強數(shù)據(jù)庫一致性,本章主要內(nèi)容,分布式事務概述,分布式事務定義和特性,分布式事務的結(jié)構(gòu)和事務狀態(tài),分布式事務管理的問題和目標,分布式事務定義和特性,1.,分布式事務的定義,事務,是為了實現(xiàn)特定的業(yè)務功能而訪問數(shù)據(jù)庫的一個最小的邏輯工作單位,它是一個操作序列。,分布式事務,在分布式系統(tǒng)中,對分布在網(wǎng)絡中不同站點上數(shù)據(jù)庫存取操作的序列。,一個分布式事務即全局事務,通常由一個主(父)事務和在不同站點上執(zhí)行的子事務(局部事
2、務)組成。,主事務負責事務的開始,提交和異常中止。,子事務完成對相應站點上數(shù)據(jù)庫的訪問操作。,全局事務是訪問或更新多個站點上數(shù)據(jù)的事務。,局部事務是僅僅訪問或更新一個站點上數(shù)據(jù)的事務。,2,.分布式事務的特性:ACID,原子性(atomicity)指事務執(zhí)行時的不可分割性。這個特性確保了每個事務要么全部發(fā)生,要么全部不發(fā)生。,一致性(consistency)事務執(zhí)行的結(jié)果必須使數(shù)據(jù)庫從一個一致性狀態(tài)轉(zhuǎn)到另一個一致性狀態(tài)。,隔離性(isolaty)一個事務的執(zhí)行不被其他事務干擾。,持久性(durability)一個事務一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變應該是永久性的。無論系統(tǒng)發(fā)生任何故障,都不會丟
3、失該事務的執(zhí)行結(jié)果。,應用,分布式事務的結(jié)構(gòu),分布式事務,分布式事務,分布式事務,子,事,務,子,事,務,子,事,務,子,事,務,子,事,務,子,事,務,分布式事務的一般結(jié)構(gòu)為:,Begin Transaction 原語:開始一個事務,T1,T2,:子事務或操作序列,:,Tn,Commit 原語:事務成功完成的結(jié)束,RollBack 或Abort原語:事務失敗的結(jié)束,2.分布式數(shù)據(jù)庫中進程的協(xié)作,(1)兩個概念,進程:,是一個具有一定獨立功能的程序關于某個數(shù)據(jù)集合的一次運,行活動。,它有兩個側(cè)面:,進程說明:定義進程的行為模式,包括數(shù)據(jù)和對數(shù)據(jù)的一組,操作,執(zhí)行這組操作,完成某一功能。,進程執(zhí)
4、行:按進程說明中所定義的模式來啟動這個進程,執(zhí),行其中的那組操作。,事務代理(Agent):在分布式數(shù)據(jù)庫系統(tǒng)中,為了完成在不同站,點上的相應功能,分布式應用必須在這些站點中執(zhí)行若干進,程,這些進程就稱為該應用在那個站點上的“事務代理”。,(,2)進程的協(xié)作,為了協(xié)調(diào)地執(zhí)行分布式應用的全局操作,分駐于不同站點的諸事務代理必須進行協(xié)調(diào)。為考慮事務的特性,把各站點上的諸代理組建成協(xié)作進程來完成一個全局應用,并作如下規(guī)定:,1)每一應用均有一個負責啟動整個事務的總代理或稱根代理,建立總代理的站點稱為源站點;,2)只有總代理才能發(fā)出全局有效的事務開始,提交和撤銷原語;,3)只有總代理才能請求建立新的事
5、務代理;,4)各站點上的子事務都執(zhí)行成功,總代理才能決定提交該事務,否則總代理將決定撤銷該事務。,FUND_TRANSFER:,Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);,Begin_Transaction;,Select AMOUNT into$FROM_AMOUNT from ACCOUNT,where ACCOUNT_NUMBER=$FROM_ACC;,if$FROM_AMOUNT-$AMOUNT0 then abort,else begin,Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT,where ACCOUN
6、T_NUMBER=$FROM_ACC;,Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT,where ACCOUNT_NUMBER=$TO_ACC;,Commit,end,圖1全局級的FUND_TRANSFER事務,ROOT_AGENT AGENT:,輸入:匯出金額和轉(zhuǎn)出/轉(zhuǎn)入賬號,事務開始:檢查轉(zhuǎn)出賬號中,是否又足夠的轉(zhuǎn)出資金,更新轉(zhuǎn)出賬號存款余額,創(chuàng)建代理Agent,向代理送信息:轉(zhuǎn)入帳號,金額,等待來自Agent的消息,成功,提交事務:成功結(jié)束,否,撤銷事務:失敗結(jié)束,接收來自根代理的消息,更新轉(zhuǎn)入賬號存款余額,發(fā)送執(zhí)行消息給根代理,(成功或失敗),ROO
7、T-AGENT;,Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);,Begin_transaction;,Select AMOUNT into$FROM_AMOUNT from ACCOUNT,where ACCOUNT_NUMBER=$FROM_ACCOUNT;,if$FROM_AMOUNT-$AMOUNT0 then abort,else begin,Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT,where ACCOUNT=$FROM_ACC;,Create AGENT;,SEND to AGENT($AMOUNT,$T
8、O_ACC);,Commit,end,AGENT;,Receive from ROOT_AGENT($AMOUNT,$TO_ACC);,Update ACCOUNT set AMOUNT=AMOUNT+$AMOUNT,where ACCOUNT=$TO_ACC;,Send to ROOT_AGENT(SUCCESS/FALL),圖3兩個代理組成的FUND_TRANSFER事務,分布式事務管理的問題和目標,分布式事務管理的問題,(,1,)處理數(shù)據(jù)項的多個副本,分布式事務管理負責保持同一數(shù)據(jù)的多個副本間的一致性。,(,2,)單個站點的故障,當故障站點得到恢復時,,DDBMS,協(xié)同該故障站點上的,D
9、BMS,,必須在該站點與系統(tǒng)重新連接時,使它的局部數(shù)據(jù)與其他站點同步。,(,3,)通信網(wǎng)絡的故障,系統(tǒng)必須有能力處理一個或多個連接站點的通信網(wǎng)絡故障。這個問題的一個極端情況是發(fā)生網(wǎng)絡分割。,(,4,)分布式提交,如果在提交一個分布式事務過程中至少有一個站點發(fā)生故障的話,那么這個分布式事務的提交將會產(chǎn)生問題。,2.,分布式事務管理的目標,事務管理的任務就是負責當若干個事務并發(fā)執(zhí)行和事,務執(zhí)行發(fā)生錯誤時,使數(shù)據(jù)庫仍保持一致狀態(tài)。,例如:,某公司在銀行中有A,B兩個賬號,現(xiàn)在公司想從賬號A中取出一萬元,存入賬號B。,1、定義一個事務,該事務包括兩個操作,第一個操作是從賬號A中減去一萬元,第二個操作是
10、向賬號B中加入一萬元。,2、在事務開始時,數(shù)據(jù)庫是處于一個一致性狀態(tài)。,3、在事務執(zhí)行時,如果只做第一個操作則用戶邏輯上就會發(fā)生錯誤,少了一萬元,這時數(shù)據(jù)庫就處于非一致性狀態(tài)。,4、當我們接著做第二個操作,且成功提交后,數(shù)據(jù)庫又處在了一致性的狀態(tài)。,事務管理所追求的理想目標是高執(zhí)行效率,高并行性,和高可靠性。這三大理想目標往往不能兼得,因為他們之,間密切相關,而又矛盾。可靠性措施會使效率下降,而事,務運行效率不僅取決于采用的策略,還與下列因素有關:,(1)CPU和主存利用率,(2)控制報文,(3)相應時間,(4)可用性,由此可見事務管理的目標是:,(1)維護分布式事務的原子性,一致性,持久性和
11、隔,離性。,(2)獲得最小的主存和CPU開銷,降低控制報文的傳,輸個數(shù)和加快分布式事務的響應速度;,(3)獲得最大限度的系統(tǒng)可靠性和可用性。,分布式事務的執(zhí)行與恢復,分布式事務管理的抽象模型,在分布式數(shù)據(jù)庫系統(tǒng)中,事務管理功能分成兩,個層次。,在每個站點上,類似于集中式數(shù)據(jù)庫系統(tǒng)中,的局部事務管理器(LTM)進行局部事務的管理,,負責本站點事務的執(zhí)行,完成對本站點數(shù)據(jù)庫數(shù)據(jù),的訪問;,對整個分布式數(shù)據(jù)庫系統(tǒng),由駐留在各個站點,上的分布式事務管理器(DTM)共同協(xié)作,實現(xiàn),對分布式事務的協(xié)調(diào)和管理。,圖5分布式事務管理的抽象模型,站,點,1,站,點,3,站,點,2,本地事務管理器,LTM1,分布
12、式事務管理器,DTM1,分布式事務管理器,DTM1,本地事務管理器,LTM2,分布式事務管理器,DTM1,本地事務管理器,LTM3,局部事務管理器LTM的結(jié)構(gòu)和功能在許多方面,與集中式系統(tǒng)類似,主要包括:,(1)保證本地事務的ACID特性;,(2)維護一個用于恢復的日志,代替DTM把,用于分布式事務執(zhí)行和恢復的信息記入日志。,(3)參與適當?shù)牟l(fā)控制模式,以協(xié)調(diào)在該站,點上執(zhí)行的事務的并發(fā)執(zhí)行。接收并聽從本站點上,DTM代理發(fā)來的LOG原語,記入日志并執(zhí)行之。,LOG原語包括:local begin_transaction,local commit,local abort,分布式事務管理器DT
13、M的功能包括:,(1)保證分布式事務的ACID特性,尤其是執(zhí)行分布,式事務的原子性,使每個站點的子事務都成功執(zhí)行,或都,不執(zhí)行。這是通過向各個站點發(fā),begin_transaction,commit或abort,create原語來實現(xiàn)的。,(2)負責協(xié)調(diào)由該站點發(fā)出的所有分布式事務的執(zhí),行。包括:啟動分布式事務的執(zhí)行;將分布式事務分解為,一些子事務,并將這些子事務分派到恰當?shù)恼军c上去執(zhí),行;決定分布式事務的終止,即決定在該分布式事務中所,包含的所有站點上的子事務都撤銷或都提交。,(3)支持分布式事務的執(zhí)行位置透明性,這也是分,布式事務管理的最基本要求。分布式事務管理器根,據(jù)事務內(nèi)部的邏輯劃分為
14、若干子事務,按某種要求,分布到相應站點上執(zhí)行,最后由源發(fā)站點提供事務,的最終結(jié)果。它實現(xiàn)了對網(wǎng)絡上各站點的各個子事,務的監(jiān)督與管理,完成對整個分布式事務執(zhí)行過程,的調(diào)度和管理,從而保證分布式數(shù)據(jù)庫系統(tǒng)的高效,率。,分布式事務執(zhí)行的控制模型,分布式事務的控制模型是指協(xié)調(diào)分布式事務中,各成員DBMS執(zhí)行其子事務的通用方法;,控制分布式事務執(zhí)行的控制模型有:,1)主從模型,2)三角模型,3)層次控制模型,圖6 分布式執(zhí)行的主從控制模型,圖7 分布式執(zhí)行的三角控制模型,圖8 分布式執(zhí)行的層次控制模型,分布式數(shù)據(jù)庫系統(tǒng)中的故障,事務故障恢復的基本概念,研究數(shù)據(jù)庫系統(tǒng)中故障的恢復,主要是指如何恢復因,故障
15、而破壞的數(shù)據(jù)庫,使數(shù)據(jù)庫恢復到一個正確,一致的,狀態(tài)?;謴偷幕驹硎菙?shù)據(jù)冗余,即利用冗余存儲在別,處的信息和數(shù)據(jù),部分或全部重建數(shù)據(jù)庫。,1.事務故障和事務恢復,當發(fā)生事務故障時,保證事務原子性的措施稱為事務,故障恢復,簡稱為事務恢復。,事務恢復主要時依靠日志來實現(xiàn)的。,2.事務狀態(tài)及狀態(tài)轉(zhuǎn)移,為保證可恢復性,系統(tǒng)需要保存事務的起始,終止,,提交或撤銷的時間軌跡,事務恢復管理器還對下列操作進,行跟蹤記錄。,1)begin transaction:標記事務開始執(zhí)行。,2)read或write:表示事務對某個數(shù)據(jù)項進行讀或?qū)憽?3)End _transaction:表示事務的讀或?qū)懖僮饕呀?jīng)結(jié)束,
16、并,標記事務執(zhí)行結(jié)束。但是,在這一點,需要檢查被該事務,所作的改變是否永久寫入數(shù)據(jù)庫(已提交),或事務由于,違反可串行性或其他原因而被撤銷。,4)commit_transaction:表示事務已經(jīng)成功結(jié)束,因此事務,執(zhí)行的任何改變可以安全提交到數(shù)據(jù)庫并且不會被撤銷。,5)rollback(或 abort):表示事務沒有成功結(jié)束,因此必須撤,銷事務對數(shù)據(jù)庫所作的任何改變或影響。,read/write,Begin end,transaction transaction commit,abort abort,active,Partially,committed,committed,failed,terminated,3.事務的提交點,當事務T所有的站點數(shù)據(jù)庫存取操作都已成功執(zhí)行,,并且所有操作對數(shù)據(jù)庫的影響都已記錄在日志中時,該事,務T就到達提交點(committed point).提交點后事務就成為,已提交的事務,并且假定其結(jié)果已永久記錄在數(shù)據(jù)庫中,(事務的永久性)。然后事務在日志中寫入提交記錄,commit,T.在系統(tǒng)發(fā)生故障時,需要掃描日志,檢查那,些已在日志中寫入start_tran