亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

嵌套事務模型下實時數(shù)據(jù)庫故障恢復方法

文檔序號:6599767閱讀:228來源:國知局

專利名稱::嵌套事務模型下實時數(shù)據(jù)庫故障恢復方法嵌套事務模型下實時數(shù)據(jù)庫故障恢復方法
技術領域
::本發(fā)明屬于實時數(shù)據(jù)庫故障恢復領域。針對嵌套實時事務的特性,提出了一種新的、支持嵌套實時事務模型的故障恢復方法。該故障恢復方法對傳統(tǒng)的日志記錄類型與結(jié)構進行了改進,以更好地適應嵌套實時事務的特性;在日志緩沖區(qū)分配策略上,并發(fā)的嵌套實時事務被分配獨立的活動日志區(qū),從而解決了順序日志模式中當前日志緩沖頁因為嚴重的訪問競爭而影響系統(tǒng)性能的問題;在故障發(fā)生后的恢復處理算法中,對重做(Redo)起始點選擇與執(zhí)行順序進行了優(yōu)化處理,在確保提交事務持久性的前提下,以盡可能地提高恢復性能。
背景技術
:實時數(shù)據(jù)庫通常應用在計算機集成制造系統(tǒng)、電網(wǎng)調(diào)度等時間關鍵類應用中。而對于計算機集成制造系統(tǒng)等應用而言,其處理的工程設計事務往往龐大且具有復雜結(jié)構,傳統(tǒng)無內(nèi)部結(jié)構的平坦事務模型已經(jīng)不能滿足具有復雜結(jié)構的工程設計事務的需求,這就需要支持內(nèi)部結(jié)構的嵌套事務模型。嵌套事務在事務隔離性、事務提交和夭折上具有與平坦事務不同的語義,因而在調(diào)度算法、并發(fā)控制協(xié)議、故障恢復等方面需要提供新的策略和機制。對于數(shù)據(jù)和事務都具有定時限制的實時數(shù)據(jù)庫而言,故障發(fā)生后能迅速而有效的恢復是至關重要的?,F(xiàn)有實時數(shù)據(jù)庫故障恢復技術的研究主要基于平坦事務模型的。而對于計算機集成制造系統(tǒng)等應用而言,其處理的工程設計事務通常采用嵌套事務模型,一個嵌套實時事務可定義如下定義1嵌套實時事務(NestedReal-TimeTransaction,NRTT)定義為一個四元組NRTT::=(S,R,<t,C)S::={〈STEP>,......}STEP::=〈SUBT廳〉|〈0P>其中,SUBTRAN表示子事務,子事務又可以包含自己的子事務,即SUBTRAN::=NRTTISUBTRAN;0P表示基本的事務操作;R代表執(zhí)行S所需系統(tǒng)資源;<t為S上的一個偏序關系;C表示嵌套事務的定時限制。由上述NRTT定義可知,一個NRTT邏輯上就是一棵事務樹。一個事務樹中,沒有父事務的事務稱為根事務(即事務樹的根節(jié)點)。沒有子事務的事務稱為葉子事務。包含有子顯然,在一個事務樹中,根事務是唯一的。對于傳統(tǒng)的平坦事務,事務的執(zhí)行遵循原子性或者事務中的操作全部執(zhí)行完畢,并把對數(shù)據(jù)對象的更新反映到數(shù)據(jù)庫中;或者事務中的操作全部夭折而不給數(shù)據(jù)庫和外事務的非根事務稱為內(nèi)部事務。部環(huán)境留下任何痕跡。對于NRTT,一個子事務的夭折不一定要求其父事務夭折,即父事務的執(zhí)行并不具有原子性。在子事務夭折時,父事務根據(jù)該子事務的特性(是否可重做、是否有替代事務、是否可補償)和該子事務的關鍵程度可做出如下選擇(l)重新執(zhí)行該子事務;(2)執(zhí)行該子事務的"替代"或"補償"事務;(3)不管該子事務的夭折,繼續(xù)執(zhí)行;(4)父事務夭折。NRTT的執(zhí)行遵循如下規(guī)則(1)提交規(guī)則一個子事務的提交僅僅意味著其邏輯操作的完成,其對數(shù)據(jù)對象的更新僅僅寫入到它的結(jié)果數(shù)據(jù)集中,其對數(shù)據(jù)庫的更改直到包含該子事務的根事務提交時才能真正寫入到物理數(shù)據(jù)庫。(2)夭折規(guī)則NRTT中任何一級上的(子)事務的夭折,導致其所有子事務的夭折,但子事務的夭折不一定導致父事務的夭折,父事務仍然可能正常提交。夭折規(guī)則具有傳遞性,顯然根事務的夭折將導致NRTT的所有事務夭折。(3)可見性規(guī)則子事務能訪問其父事務所持有的數(shù)據(jù)對象(子事務繼承了父事務所持有的鎖);子事務提交后,它對數(shù)據(jù)對象的更新(結(jié)果數(shù)據(jù)集)可被父事務訪問??梢娦砸?guī)則也具有傳遞性。顯然,在故障恢復處理過程中也必須確保上述規(guī)則的滿足,這就要求故障恢復方法提供相應的支持。
發(fā)明內(nèi)容本發(fā)明目的是克服現(xiàn)有技術存在的上述不足,針對嵌套實時事務的特性,提出一種新的、支持嵌套實時事務模型的數(shù)據(jù)庫的故障恢復方法。本發(fā)明提供的故障恢復方法對傳統(tǒng)的日志記錄類型與結(jié)構進行了改進,以更好地適應嵌套實時事務的特性;在日志緩沖區(qū)分配策略上,并發(fā)的嵌套實時事務被分配獨立的活動日志區(qū),從而解決了順序日志模式中當前日志緩沖頁因為嚴重的訪問競爭而影響系統(tǒng)性能的問題;在故障發(fā)生后的恢復處理算法中,對重做(Redo)起始點選擇與執(zhí)行順序進行了優(yōu)化處理,在確保提交事務持久性的前提下,以盡可能地提高恢復性能。嵌套實時事務模型下數(shù)據(jù)庫的故障恢復方法,具體包括第一、嵌套實時事務中日志記錄類型和邏輯結(jié)構的建立根據(jù)嵌套實時事務NRTT的執(zhí)行規(guī)則特點,將日志記錄類型設計成五種,分別是事務開始日志記錄Begin,重寫日志記錄Redo,事務夭折日志記錄Abort,子事務提交日志記錄Sub_Commit和事務提交日志記錄Commit,其邏輯結(jié)構分別是<formula>formulaseeoriginaldocumentpage6</formula><formula>formulaseeoriginaldocumentpage6</formula>其中,ID為NRTT標識,用來唯一的標識每一NRTT,屬于同一NRTT的事務,包括根事務、內(nèi)部事務和葉子事務具有相同的ID;TID為事務標識,用來唯一標識NRTT中每一事務;P-TID為TID父事務的事務標識,若TID為根事務,則P-TID置為null;B,R,SC,C,A,分另U代表Begin,Redo,Sub_Commit,Commit禾口Abort五禾中曰志記錄類型;LT表示Redo曰志記錄的長度,TS表示Redo日志記錄被創(chuàng)建時的邏輯時標值,邏輯時標的初始值設為O,每當一條Redo日志記錄被創(chuàng)建,邏輯時標的值就順序加1,RID表示被更新數(shù)據(jù)對象的標識,BN表示RID所在外存塊的邏輯塊號,AI表示數(shù)據(jù)對象被更新后的值也稱后映像;VTI表示時態(tài)數(shù)據(jù)對象的有效時刻,即VTI=ST+VP,這里,ST表示時態(tài)數(shù)據(jù)對象的采樣時刻,VP表示時態(tài)數(shù)據(jù)對象有效期,對于非時態(tài)數(shù)據(jù),VTI被置為無窮大;第二、日志執(zhí)行模型的建立,該日志執(zhí)行模型包括執(zhí)行引擎模塊用于執(zhí)行各事務操作,包括事務開始、更新操作、事務提交、子事務提交、事務夭折。日志管理模塊Logger:負責為每一NRTT單獨地分配活動日志區(qū)、創(chuàng)建相應的日志記錄,同時負責創(chuàng)建并維護活動事務表ATL,當一個NRTT的根事務的提交日志記錄被寫入對應活動日志區(qū)后,Logger負責將其活動日志區(qū)的內(nèi)容才被刷新到磁盤日志文件。ATL用來記錄當前所有活躍NRTT及其所有子事務的狀態(tài)信息,活躍NRTT是已開始執(zhí)行,但根事務尚未完成提交或夭折的NRTT,Logger為每一活躍NRTT在ATL中維護一表項,并為其包含的所有子事務建立相應狀態(tài)鏈表,其邏輯結(jié)構如下ZD……...其中,ID為NRTT標識;FTS表示NRTT首個Redo日志記錄的邏輯時標值,若NRTT為只讀事務,F(xiàn)TS置為-1;TID為子事務標識,Status表示子事務當前狀態(tài),子事務當前狀態(tài)包括活躍Active、提交Sub-Commit和夭折Abort三種;活動日志區(qū)該模型為每一NRTT單獨地分配臨時日志緩沖頁,簡稱為活動日志區(qū);對每一事務操作,日志管理模塊(Logger)負責在當前執(zhí)行NRTT所屬的活動日志分區(qū)為其創(chuàng)建相應的日志記錄,只有當一個NRTT的根事務的提交日志記錄被寫入對應活動日志區(qū)后,其活動日志區(qū)的內(nèi)容才被刷新到磁盤日志文件;私有數(shù)據(jù)緩沖區(qū)用于存放NRTT在根事務提交前讀寫的數(shù)據(jù)對象系統(tǒng)數(shù)據(jù)緩沖區(qū)是磁盤數(shù)據(jù)庫中正在或?qū)⒁皇褂玫臄?shù)據(jù)在內(nèi)存中的緩存,當一個NRTT的根事務提交時,其私有數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)。磁盤數(shù)據(jù)庫和磁盤日志文件相對于內(nèi)存而言,我們將駐扎在磁盤的數(shù)據(jù)庫和日志記錄的集合分別稱為磁盤數(shù)據(jù)庫和磁盤日志文件。第三、實時數(shù)據(jù)庫系統(tǒng)故障發(fā)生后的分析階段,即確定重做Redo起始點實時數(shù)據(jù)庫發(fā)生故障后的恢復處理過程主要分為二個階段分析階段和Redo階段;在分析階段,首先通過分析日志確定故障發(fā)生前最近一次成功完成的檢驗點LS—Checkpoint,即End_Checkpoint記錄已寫入磁盤日志文件的最近一次檢驗點;根據(jù)NRTT與檢驗點LS_Checkp0int在時間軸上的相對位置關系,確定是否需要重做Redo,對于在LS_Checkpoint的Begin—Checkpoint記錄寫入磁盤日志文件以前更新已被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)的NRTT無需Redo,其余NRTT必須Redo;在掃描需要Redo的NRTT定位到FTS最小的NRTT,即為重做起始點,并將這一最小的FTS記為MinFTS;第四、實時數(shù)據(jù)庫故障發(fā)生后的Redo階段在Redo階段,依據(jù)分析階段確定的重做起始點,執(zhí)行重做操作,首先將SDB恢復到最近的一致性狀態(tài),對于過期的時態(tài)數(shù)據(jù)不執(zhí)行Redo操作;不失一般性,假定日志文件中邏輯時標值等于MinFTS的Redo日志記錄記為RedoL0gT;Redo階段的實現(xiàn)算法描述如下ProcedureRedoRecovery(longintMinFTS)Input:MinFTS表示T2和T12類NRTT中最小的FTS.Begin1:T卿=MinFTS;2:While(T卿<CTS)3:自日志文件的RedoLogT日志記錄起,正向掃描日志文件;4:IF(3RedoLogTi((RedoLogTi.TS==Temp)A(RedoLogTi.VTI>Tc)))5:Switch(Class)6:CaseSub—transaction:7:IF((3CommitLogTi)A(3LocalCommitLogTi))8:Redo(RedoLogTi);9:CaseRoot—transaction:10:IF(3CommitLogTi)11:Redo(RedoLogTi);12:Casedefault:break;13:Temp++;End在上述實現(xiàn)算法中,依據(jù)Redo日志記錄的邏輯時標值來確定執(zhí)行Redo操作的順序;在上述實現(xiàn)算法描述中,CTS表示執(zhí)行檢驗點時邏輯時標的值;T。表示系統(tǒng)當前時刻;RedoLogTi表示嵌套實時事務1\的一條Redo日志記錄;RedoLogTi.TS表示RedoLogTi的邏輯時標值;RedoL0gTi.VTI表示RedoL0gTi記錄的數(shù)據(jù)對象的有效時刻;Class代表1\的類別,這里用Sub_transaction表示1\為子事務,而Root—transaction表示1\為根事務;CommitLogTi表不根事務的Commit日志記錄;LocalCommitlxigTi表不子事務的LocalCommit日志記錄;過程Redo(RedoL0gTi)負責將RedoL0gTi記錄的數(shù)據(jù)對象用它的后映像覆蓋。本發(fā)明的優(yōu)點和積極效果與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點(1).針對嵌套實時事務的特性,對傳統(tǒng)的日志記錄類型與結(jié)構進行了改進,以更好地適應嵌套事務的特性;(2).在日志緩沖區(qū)分配策略上,并發(fā)的嵌套實時事務被分配獨立的活動日志區(qū),從而解決了順序日志模式中當前日志緩沖頁因為嚴重的訪問競爭而影響系統(tǒng)性能的問題;(3).在故障發(fā)生后的恢復處理算法中,對Redo起始點選擇與執(zhí)行順序進行了優(yōu)化處理,在確保提交事務持久性的前提下,以盡可能地提高恢復性能。性能測試結(jié)果顯示,與現(xiàn)有技術相比,本發(fā)明提出的故障恢復方法具有比傳統(tǒng)故障恢復技術更好的實時性能。圖1是五種日志記錄類型的邏輯結(jié)構圖;圖2是日志執(zhí)行模型框圖;圖3是活動事務表的邏輯結(jié)構圖;圖4是日志記錄時序圖。圖5是三種故障恢復方法實時性能的比較圖圖6是三種故障恢復方法downtime的比較圖具體實施方式實施例1本發(fā)明提供的嵌套實時事務模型下數(shù)據(jù)庫的故障恢復方法的具體描述如下令日志記錄類型和結(jié)構根據(jù)NRTT的提交規(guī)則,一個NRTT對數(shù)據(jù)庫的寫操作延時到根事務提交時才真正執(zhí)行(采用了"延時寫"技術),因而在故障恢復處理過程中,對NRTT的Undo操作不再需要。針對NRTT,我們設計了五種日志記錄類型Begin,Redo,Abort,Sub_Commit(子事務提交)和Commit(根事務提交)。圖l顯示了五種日志記錄類型的邏輯結(jié)構。其中,ID為NRTT標識,用來唯一的標識每一NRTT,屬于同一NRTT的事務(包括根事務、內(nèi)部事務和葉子事務)具有相同的ID;TID為事務標識,用來唯一標識NRTT中每一事務;P-TID為TID父事務的事務標識,若TID為根事務,則P-TID置為null;B,R,SC,C,A,分別代表Begin,Redo,Sub_Commit,Commit,Abort五種日志記錄類型;LT表示Redo日志記錄的長度;TS表示Redo日志記錄被創(chuàng)建時的邏輯時標值,邏輯時標的初始值設為O,每當一條Redo日志記錄被創(chuàng)建,邏輯時標的值就順序加1;RID表示被更新數(shù)據(jù)對象的標識;BN表示RID所在外存塊的邏輯塊號;AI表示數(shù)據(jù)對象被更新后的值(后映像);VTI表示時態(tài)數(shù)據(jù)對象的有效時刻,即VTI=ST+VP,這里,ST表示時態(tài)數(shù)據(jù)對象的采樣時刻,VP表示時態(tài)數(shù)據(jù)對象有效期。對于非時態(tài)數(shù)據(jù),VTI被置為無窮大。令日志執(zhí)行模型對于傳統(tǒng)的順序日志模式,并發(fā)事務的日志記錄按對應事務操作的執(zhí)行順序依次記錄在當前日志緩沖頁中,當事務提交或日志緩沖區(qū)滿時,相應日志記錄被寫入外存日志文件。顯然,對基于優(yōu)先級可搶占調(diào)度策略的實時數(shù)據(jù)庫系統(tǒng)而言,當前日志緩沖頁會因為嚴重的訪問競爭而成為系統(tǒng)性能的瓶頸。如圖2所示,在我們?nèi)罩灸J街?,為每一NRTT單獨地分配臨時日志緩沖頁(簡稱為活動日志區(qū))。對NRTT每一操作(包括事務開始、更新操作、根事務提交、子事務提交、事務夭折),日志管理模塊(Logger)負責在該NRTT所屬的活動日志分區(qū)為其創(chuàng)建相應的日志記錄,只有當一個NRTT的根事務的提交日志記錄被寫入對應活動日志區(qū)后,其活動日志區(qū)的內(nèi)容才被刷新到磁盤日志文件。子事務執(zhí)行時,當涉及到對數(shù)據(jù)對象的讀、寫操作時,該數(shù)據(jù)對象先被讀入該子事務的私有數(shù)據(jù)緩沖區(qū)(若該數(shù)據(jù)對象已在系統(tǒng)數(shù)據(jù)緩沖區(qū)中,則直接將其從系統(tǒng)數(shù)據(jù)緩沖區(qū)讀入到私有數(shù)據(jù)緩沖區(qū),否則從磁盤數(shù)據(jù)庫中讀入),子事務提交時,其對數(shù)據(jù)對象的更新僅僅反映在其私有數(shù)據(jù)緩沖區(qū)中,只有當根事務提交時,才將所有的更新刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū),當執(zhí)行檢驗點操作時或當系統(tǒng)數(shù)據(jù)緩沖區(qū)滿時,這些更新被從系統(tǒng)數(shù)據(jù)緩沖區(qū)強制寫出到磁盤數(shù)據(jù)庫。為了故障恢復處理的需要,在系統(tǒng)正常運行期間,Logger負責創(chuàng)建并維護活動事務表(ATL)。ATL用來記錄當前所有活躍NRTT及其所有子事務的狀態(tài)信息?;钴SNRTT是已開始執(zhí)行,但根事務尚未完成提交或夭折的NRTT。Logger為每一活躍NRTT在ATL中維護一表項,并為其包含的所有子事務創(chuàng)建狀態(tài)鏈表,其邏輯結(jié)構如下圖3所示。其中,ID為NRTT標識;FTS表示NRTT首個Redo日志記錄的邏輯時標值,若NRTT為只讀事務,F(xiàn)TS置為_1;TID為子事務標識;Status表示子事務當前狀態(tài),子事務當前狀態(tài)包括活躍(Active)、提交(Sub—Commit)禾口夭折(Abort)三禾中。當一個NRTT開始執(zhí)行,在其活動日志區(qū),一條對應的Begin日志記錄被創(chuàng)建,同時在ATL中為該NRTT創(chuàng)建一對應項;當一子事務被觸發(fā)執(zhí)行,一條相應的Begin日志記錄被創(chuàng)建,同時在ATL中NRTT的子事務狀態(tài)鏈表的表尾插入相應的鏈表項;對每一個寫操作,一條對應的Redo日志記錄被創(chuàng)建;當一子事務提交,一條對應的Sub_Commit日志記錄被創(chuàng)建,同時ATL中對應于該子事務的鏈表項的Status域被置為Sub_Commit;當一子事務夭折,先向事務管理器發(fā)送夭折其所有的子事務的消息,當收到所有子事務的夭折確認消息后,一條對應的Abort日志記錄被創(chuàng)建,同時ATL中對應于該子事務的鏈表項的Status域被置為Abort;若根事務夭折,發(fā)送夭折其所有的子事務的消息,當收到所有子事務的夭折確認消息后,一條對應的Abort日志記錄被創(chuàng)建,同時將ATL中對應于該NRTT的表項及對應子事務狀態(tài)鏈表刪除。一個根事務完成了所有操作后,檢查ATL,若其子事務中不再有活躍的子事務,即子事務狀態(tài)鏈表中所有子事務的狀態(tài)要么為Abort,要么為Sub—Commit,根事務進入提交狀態(tài),一條相應Commit日志記錄被創(chuàng)建,根事務私有緩沖區(qū)鏈表中的相關更新被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū),并將ATL中對應于該NRTT的表項及相應子事務狀態(tài)鏈表刪除。令故障恢復處理算法系統(tǒng)故障發(fā)生后,恢復處理過程主要分為二個階段分析階段和Redo階段。(1)分析階段分析階段通過分析日志來確定Redo起始點。如圖4所示,LS_Checkp0int表示在故障發(fā)生前最近的一次成功完成的檢驗點,即EncLCheckpoint記錄已寫入磁盤日志文件的最近一次檢驗點;T1表示在LS_Checkpoint的Begin—Checkpoint記錄寫入日志文件以前活動日志區(qū)已寫入到磁盤日志文件的NRTT;T2表示部分日志記錄在Begin—Checkpoint之前寫入,部分日志記錄在Begin—Checkpoint之后寫入活動日志區(qū)的NRTT;T3表示日志記錄在Begin—Checkpoint之后,但在End_Checkpoint之前寫入日志文件的NRTT;T4表示部分日志記錄在EncLCheckpoint之前寫入,部分在End_Checkpoint之后寫入活動日志區(qū)的NRTT;T5表示日志記錄在EncLCheckpoint之后但在故障發(fā)生前寫入日志文件的NRTT;T6表示日志記錄尚未寫入到日志文件就發(fā)生系統(tǒng)故障的NRTT。對于T2,T3,T4,T5這四類NRTT,Commit日志記錄在故障發(fā)生前已寫入日志文件,但這四類NRTT對數(shù)據(jù)庫所做更新在故障發(fā)生前不一定真正寫入SDB,所以恢復時必須執(zhí)行Redo。T6類NRTT由于其Commit日志記錄尚未寫入日志文件,因此無需Redo。對于T1類NRTT,在基于先來先服務調(diào)度策略的傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中,由于所有日志記錄在LS_CheCkp0int開始之前已寫入日志文件,按照先來先服務調(diào)度策略,它們對數(shù)據(jù)庫的更新也應該在LS_CheCkp0int執(zhí)行前被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū),因而在檢驗點過程中,這些更新將被完整地寫入到SDB。所以對于傳統(tǒng)數(shù)據(jù)庫系統(tǒng)而言,Tl類事務無需Redo。然而,對于實時數(shù)據(jù)庫系統(tǒng),由于采用了基于優(yōu)先級可搶占的調(diào)度策略,事務在將活動日志區(qū)刷新到日志文件后,在更新尚未或尚未完全刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)時,CPU可能被其它高優(yōu)先級事務搶占,從而可能導致事務對數(shù)據(jù)庫更新未能在LS_CheCkp0int過程中完整地寫入到SDB,當故障發(fā)生,導致事務效果丟失。進一步,我們將T1類NRTT劃分為兩類T11和T12。Til表示在Begin—Checkpoint記錄寫入磁盤日志文件以前更新已被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)的NRTT;T12表示在Begin—Checkpoint記錄寫入磁盤日志文件時更新還沒被完全刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)的NRTT。顯然Til類NRTT無需Redo,而T12類NRTT必須Redo。分析階段的結(jié)果就是在T2和T12類NRTT中找到FTS最小的NRTT,即確定重做起始點。在后文中將滿足上述條件的最小FTS記為MinFTS。(2)Redo階段Redo階段依據(jù)分析階段確定的重做起始點,執(zhí)行Redo操作,將SDB恢復到最近的一致性狀態(tài)。由于時態(tài)數(shù)據(jù)超過了有效期后,它的值就變得無意義,因此,在Redo階段,對過期的時態(tài)數(shù)據(jù)并不執(zhí)行Redo操作。不失一般性,假定日志文件中邏輯時標值等于MinFTS的Redo日志記錄記為RedoL0gT。Redo階段的實現(xiàn)算法描述如下ProcedureRedoRecovery(longintMinFTS)Input:MinFTS表示T2和T12類NRTT中最小的FTS.Begin1:T卿=MinFTS;2:While(T卿<CTS)3:自日志文件的RedoLogT日志記錄起,正向掃描日志文件;4:IF(3RedoLogTi((RedoLogTi.TS==Temp)A(RedoLogTi.VTI>Tc)))5:Switch(Class)6:CaseSub—transaction:7:IF((3CommitLogTi)A(3LocalCommitLogTi))8:Redo(RedoLogTi);9:CaseRoot—transaction:10:IF(3CommitLogTi)11:Redo(RedoLogTi);12:Casedefault:break;13:Temp++;麵在上述實現(xiàn)算法中,依據(jù)Redo日志記錄的邏輯時標值來確定執(zhí)行Redo操作的順序。算法描述中,CTS表示執(zhí)行檢驗點時邏輯時標的值;T。表示系統(tǒng)當前時刻;Red0L0gTi表示嵌套實時事務1\的一條Redo日志記錄;RedoLogTi.TS表示RedoLogTi的邏輯時標值;RedoL0gTi.VTI表示RedoL0gTi記錄的數(shù)據(jù)對象的有效時刻;Class代表1\的類別,這里用Sub—transaction表不1\為子事務,而Root—transaction表不1\為根事務;CommitLogTi表示豐艮事務的Commit日志記錄;LocalCommitLogTi表示子事務的LocalCommit日志記錄;過程Redo(RedoL0gTi)負責將RedoL0gTi記錄的數(shù)據(jù)對象用它的后映像覆蓋。實施例具體性能比較將本發(fā)明方法與已有的支持嵌套事務模型的恢復方法基于保存點的故障恢復方法和支持嵌套事務的故障恢復方法進行運行時日志代價的比較,測試了不同故障恢復方法在系統(tǒng)正常運行時的日志開銷對系統(tǒng)性能的影響,此外對不同故障恢復方法的系統(tǒng)停止服務時間也進行了比較,測試的主要性能指標為嵌套實時事務錯過截止期的比率MDR和故障發(fā)生后系統(tǒng)停止服務的時間downtime。嵌套實時事務錯過截止期的比率MDR反映了系統(tǒng)的實時性能,其值越小,系統(tǒng)的實時性能越好。在實驗中,優(yōu)先級分派采用最早截止期優(yōu)先策略。嵌套實時事務的截止期按如下公式計算截止期=AT+SFXET,這里,AT表示嵌套實時事務的到達時間;SF表示松弛因子,為滿足均勻分布的隨機變量;ET表示嵌套實時事務的估計執(zhí)行時間。表1給出了實驗的主要參數(shù),其中,U[i,j]表示定義在區(qū)間[i,j]上滿足均勻分布的隨機變量。表1.主要實驗參數(shù)<table>tableseeoriginaldocumentpage12</column></row><table>圖5顯示了當事務到達率TArRate增加時,本發(fā)明方法與基于保存點的故障恢復方法、支持嵌套事務的故障恢復方法在嵌套實時事務錯過截止期比率MDR上的差異,在圖5中,我們用NFRS代表本發(fā)明方法,SPFRS代表基于保存點的故障恢復方法,TFRS代表支持嵌套事務的故障恢復方法。可以看出,當TArrRate增加時,NFRS、SPFRS和TFRS的MDR都相應地增加,但NFRS的MDR要明顯低于SPFRS和TFRS的MDR,并且NFRS實時性能的優(yōu)越性隨著TArrRate的增大而變得更加明顯,這是因為NFRS采用了與傳統(tǒng)的順序日志模式不同的日志緩沖區(qū)分配策略,從而有效地解決了順序日志模式中當前日志緩沖頁因為嚴重的訪問競爭而影響系統(tǒng)性能的問題。圖6是三種故障恢復方法NFRS、SPFRS和TFRS在不同TArrRate下downtime的比較結(jié)果??梢钥闯?,當TArrRate增加時,三種故障恢復方法的downtime都相應地增加,這是因為當TArrRate增高時,故障發(fā)生后要求恢復的嵌套實時事務與數(shù)據(jù)也相應增多的原因。同時也可以看到,相比于SPFRS和TFRS,NFRS的downtime更小,這是因為NFRS對Redo起始點選擇與執(zhí)行順序進行了優(yōu)化處理,并且免去了對過期的時態(tài)數(shù)據(jù)對象Redo操作,因而比SPFRS和TFRS在downtime上有更好的性能。權利要求一種嵌套實時事務模型下數(shù)據(jù)庫的故障恢復方法,其特征在于該方法包括第一、嵌套實時事務中日志記錄類型和邏輯結(jié)構的建立根據(jù)嵌套實時事務NRTT的執(zhí)行規(guī)則特點,將日志記錄類型設計成五種,分別是事務開始日志記錄Begin,重寫日志記錄Redo,事務夭折日志記錄Abort,子事務提交日志記錄Sub_Commit和事務提交日志記錄Commit,其邏輯結(jié)構分別是BeginRedoSub-CommiCommitAbort其中,ID為NRTT標識,用來唯一的標識每一NRTT,屬于同一NRTT的事務,包括根事務、內(nèi)部事務和葉子事務具有相同的ID;TID為事務標識,用來唯一標識NRTT中每一事務;P-TID為TID父事務的事務標識,若TID為根事務,則P-TID置為null;B,R,SC,C,A,分別代表Begin,Redo,Sub_Commit,Commit和Abort五種日志記錄類型;LT表示Redo日志記錄的長度,TS表示Redo日志記錄被創(chuàng)建時的邏輯時標值,邏輯時標的初始值設為0,每當一條Redo日志記錄被創(chuàng)建,邏輯時標的值就順序加1,RID表示被更新數(shù)據(jù)對象的標識,BN表示RID所在外存塊的邏輯塊號,AI表示數(shù)據(jù)對象被更新后的值也稱后映像;VTI表示時態(tài)數(shù)據(jù)對象的有效時刻,即VTI=ST+VP,這里,ST表示時態(tài)數(shù)據(jù)對象的采樣時刻,VP表示時態(tài)數(shù)據(jù)對象有效期,對于非時態(tài)數(shù)據(jù),VTI被置為無窮大;第二、日志執(zhí)行模型的建立,該日志執(zhí)行模型包括執(zhí)行引擎模塊用于執(zhí)行各事務操作,包括事務開始、更新操作、事務提交、子事務提交、事務夭折;日志管理模塊Logger負責為每一NRTT單獨地分配活動日志區(qū)、創(chuàng)建相應的日志記錄,同時負責創(chuàng)建并維護活動事務表ATL,當一個NRTT的根事務的提交日志記錄被寫入對應活動日志區(qū)后,Logger負責將其活動日志區(qū)的內(nèi)容才被刷新到磁盤日志文件;ATL用來記錄當前所有活躍NRTT及其所有子事務的狀態(tài)信息,活躍NRTT是已開始執(zhí)行,但根事務尚未完成提交或夭折的NRTT,Logger為每一活躍NRTT在ATL中維護一表項,并為其包含的所有子事務建立相應狀態(tài)鏈表,其邏輯結(jié)構如下其中,ID為NRTT標識;FTS表示NRTT首個Redo日志記錄的邏輯時標值,若NRTT為只讀事務,F(xiàn)TS置為-1;TID為子事務標識,Status表示子事務當前狀態(tài),子事務當前狀態(tài)包括活躍Active、提交Sub-Commit和夭折Abort三種;活動日志區(qū)該模型為每一NRTT單獨地分配臨時日志緩沖頁,簡稱為活動日志區(qū);對每一事務操作,日志管理模塊(Logger)負責在當前執(zhí)行NRTT所屬的活動日志分區(qū)為其創(chuàng)建相應的日志記錄,只有當一個NRTT的根事務的提交日志記錄被寫入對應活動日志區(qū)后,其活動日志區(qū)的內(nèi)容才被刷新到磁盤日志文件;私有數(shù)據(jù)緩沖區(qū)用于存放NRTT在根事務提交前讀寫的數(shù)據(jù)對象;系統(tǒng)數(shù)據(jù)緩沖區(qū)是磁盤數(shù)據(jù)庫中正在或?qū)⒁皇褂玫臄?shù)據(jù)在內(nèi)存中的緩存,當一個NRTT的根事務提交時,其私有數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū);磁盤數(shù)據(jù)庫和磁盤日志文件相對于內(nèi)存而言,我們將駐扎在磁盤的數(shù)據(jù)庫和日志記錄的集合分別稱為磁盤數(shù)據(jù)庫和磁盤日志文件;第三、實時數(shù)據(jù)庫故障發(fā)生后的分析階段,即確定Redo起始點實時數(shù)據(jù)庫系統(tǒng)故障發(fā)生后的恢復處理過程主要分為二個階段分析階段和重做Redo階段;在分析階段,首先通過分析日志確定故障發(fā)生前最近一次成功完成的檢驗點LS_Checkpoint,即End_Checkpoint記錄已寫入磁盤日志文件的最近一次檢驗點;根據(jù)NRTT與檢驗點LS_Checkpoint在時間軸上的相對位置關系,確定是否需要重做Redo,對于在LS_Checkpoint的Begin_Checkpoint記錄寫入磁盤日志文件以前更新已被刷新到系統(tǒng)數(shù)據(jù)緩沖區(qū)的NRTT無需Redo,其余NRTT必須Redo;在掃描需要Redo的NRTT定位到FTS最小的NRTT,即為重做起始點,并將這一最小的FTS記為MinFTS;第四、實時數(shù)據(jù)庫故障發(fā)生后的Redo階段在Redo階段,依據(jù)分析階段確定的重做起始點,執(zhí)行重做操作,首先將SDB恢復到最近的一致性狀態(tài),對于過期的時態(tài)數(shù)據(jù)不執(zhí)行Redo操作;不失一般性,假定磁盤日志文件中邏輯時標值等于MinFTS的Redo日志記錄記為RedoLogT;Redo階段的實現(xiàn)算法描述如下ProcedureRedoRecovery(longintMinFTS)InputMinFTS表示T2和T12類NRTT中最小的FTS.Begin1Temp=MinFTS;2While(Temp<CTS)3自日志文件的RedoLogT日志記錄起,正向掃描日志文件;<mrow><mn>4</mn><mo>:</mo><mi>IF</mi><mrow><mo>(</mo><mo>&Exists;</mo><msub><mi>RedoLog</mi><mi>Ti</mi></msub><mrow><mo>(</mo><mrow><mo>(</mo><msub><mi>RedoLog</mi><mi>Ti</mi></msub><mo>&CenterDot;</mo><mi>TS</mi><mo>=</mo><mo>=</mo><mi>Temp</mi><mo>)</mo></mrow><mo>^</mo><mrow><mo>(</mo><msub><mi>RedoLog</mi><mi>Ti</mi></msub><mo>&CenterDot;</mo><mi>VTI</mi><mo>></mo><msub><mi>T</mi><mi>C</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow><mo>)</mo></mrow></mrow>5Switch(Class)6CaseSub_transaction<mrow><mn>7</mn><mo>:</mo><mi>IF</mi><mrow><mo>(</mo><mrow><mo>(</mo><msub><mrow><mo>&Exists;</mo><mi>CommitLog</mi></mrow><mi>Ti</mi></msub><mo>)</mo></mrow><mo>^</mo><mrow><mo>(</mo><mo>&Exists;</mo><msub><mi>LocalCommitLog</mi><mi>Ti</mi></msub><mo>)</mo></mrow><mo>)</mo></mrow></mrow>8Redo(RedoLogTi);9CaseRoot_transaction<mrow><mn>10</mn><mo>:</mo><mi>IF</mi><mrow><mo>(</mo><mo>&Exists;</mo><msub><mi>CommitLog</mi><mi>Ti</mi></msub><mo>)</mo></mrow></mrow>11Redo(RedoLogTi);12Casedefaultbreak;13Temp++;End在上述實現(xiàn)算法中,依據(jù)Redo日志記錄的邏輯時標值來確定執(zhí)行Redo操作的順序;在上述實現(xiàn)算法描述中,CTS表示執(zhí)行檢驗點時邏輯時標的值;TC表示系統(tǒng)當前時刻;RedoLogTi表示嵌套實時事務Ti的一條Redo日志記錄;RedoLogTi.TS表示RedoLogTi的邏輯時標值;RedoLogTi.VTI表示RedoLogTi記錄的數(shù)據(jù)對象的有效時刻;Class代表Ti的類別,這里用Sub_transaction表示Ti為子事務,而Root_transaction表示Ti為根事務;CommitLogTi表示根事務的Commit日志記錄;LocalCommitLogTi表示子事務的LocalCommit日志記錄;過程Redo(RedoLogTi)負責將RedoLogTi記錄的數(shù)據(jù)對象用它的后映像覆蓋。全文摘要嵌套實時事務模型下數(shù)據(jù)庫故障恢復方法。針對嵌套實時事務的特性,提出了一種新的、支持嵌套實時事務模型的故障恢復方法。該故障恢復方法對傳統(tǒng)的日志記錄類型與結(jié)構進行了改進,以更好地適應嵌套實時事務的特性;在日志緩沖區(qū)分配策略上,并發(fā)的嵌套實時事務被分配獨立的活動日志區(qū),從而解決了順序日志模式中當前日志緩沖頁因為嚴重的訪問競爭而影響系統(tǒng)性能的問題;在故障發(fā)生后的恢復處理算法中,對重做(Redo)起始點選擇與執(zhí)行順序進行了優(yōu)化處理,在確保提交事務持久性的前提下,以盡可能地提高恢復性能。本發(fā)明適用于計算機集成制造系統(tǒng)、電網(wǎng)調(diào)度等時間關鍵類應用。文檔編號G06F11/34GK101794247SQ20101013265公開日2010年8月4日申請日期2010年3月26日優(yōu)先權日2010年3月26日發(fā)明者劉鳳連,尹波,申艷,肖迎元申請人:天津理工大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1