1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 正文

內存數據庫日志恢復技術

前言:本站為你精心整理了內存數據庫日志恢復技術范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

內存數據庫日志恢復技術

摘要恢復技術是保證內存數據庫運行可靠的關鍵,傳統的基于日志恢復技術會對系統性能產生很大影響。本文提出內存數據庫系統快速日志恢復技術,它控制日志的產生數量,使得在系統崩潰并重新啟動時,能以最快的速度恢復到系統崩潰前的最近一致點上。

關鍵字內存數據庫;日志恢復;檢查點

0引言

內存數據庫(MMDB)把數據全部或者當前工作部分駐留在內存中,消除了傳統磁盤數據庫系統中I/O瓶頸,極大的提高了系統的性能和吞吐量,但是由于所有操作都作用于內存數據庫的主拷貝上,數據庫及易遭到操作系統和應用軟件造成的破壞,因此MMDB的恢復技術十分關鍵。日志(Logging)恢復是傳統的MMDB恢復技術之一,它能滿足當前MMDB系統對事務響應和快速系統恢復的要求,但是在大量事務吞吐量情況下造成的日志暴增所帶來很大問題,會對MMDB性能產生很大影響。

本文提出MMDB系統快速日志恢復技術,它是在不阻礙系統正常運行的情況下,控制日志的產生數量,使得在系統崩潰并重新啟動時,能以最快的速度恢復到系統崩潰前的最近一致點上。

1系統構架設計

快速恢復模型的整體架構如圖1所示。事務處理模塊負責根據用戶請求產生事務,并由事務管理器調度。事務管理器將負責各個事務的日志記錄,交給日志產生規則處理。檢查點模塊根據日志產生規則才產生的日志數量動態調整檢查點啟動時間。當日志記錄數達到一定值時,檢查點程序啟動。它讀取所有日志記錄,交給日志篩選器。日志篩選器根據篩選算法,從當前所有日志項中篩選出實際有效的日志記錄,并將這些有效日志記錄交給日志分發結點。日志分發結點主要做兩項工作:第一是它將日志傳送給日志磁盤管理器,由其負責將日志回寫到日志磁盤上,第二是日志分發結點將日志傳送給備份更新發生器。備份更新發生器利用快速恢復算法,觸發各類更新操作,根據日志更新磁盤上的數據。

圖1快速恢復模型的整體架構

該快速恢復模型具有如下的特點:

①快速恢復模型以日志驅動方式做檢查點,異步更新磁盤上的備份數據鏡象。

②系統只維護全局Redo日志,以Redo日志來驅動備份更新發生器,各個事務維護私有Redo日志和Undo日志在事務提交時將私有Redo日志寫入全局Redo日志中。

③使用日志篩選算法,近一步減少Redo日志的數量,提升檢查點程序的性能。

④備份數據鏡象只反應己提交事務的更新狀態,因此在系統重載時不需要回退未提交的事務。

⑤快速恢復算法為并發重載算法。在系統恢復過程中,能繼續接受新事務的請求。

2快速日志驅動檢查點

快速日志驅動檢查點的基本思想是,檢查點程序仍然由日志來驅動,根據讀取到的日志項來更新數據鏡象上的內容,維持數據鏡象與內存中數據庫的基本同步。但是,與以往日志驅動檢查點算法不同的是,它通過日志產生規則和日志篩選算法兩個策略克服了以往日志驅動檢查點算法中日志數量可能過快增長的問題。

2.1日志產生規則

快速日志驅動檢查點算法中設立的日志產生規則是:系統中日志被分為全局日志和私有日志兩類。系統只維護全局Redo日志,而不維護Undo日志,由事務自身維護私有的Redo日志和Undo日志。在事務提交時,依照事務提交的先后順序,將事務的私有Redo日志添加到全局Redo日志中。因此,在事務運行過程中,會產生Redo日志和Undo日志。Redo日志用于在系統恢復過程中,重做已提交事務。而Undo日志用于在事務Abort時回退事務,或者在系統恢復過程中回退未提交的事務。如果恢復模型的設計能夠保證系統恢復過程中,沒有需要回退的未提交事務,那么系統只需要讀取Redo日志而不需要讀取Undo日志。因而系統只需要維護全局的Redo日志,而不需要維護Undo日志,將Undo日志交給事務自身維護,Undo日志只用于事務自身Abort時回退。這樣就可以減少全局日志的總量。

圖2具體描述了全局日志和私有日志的使用。在事務T1,T2,T3的內存空間內,各自維護自己的私有Redo日志和Undo日志。在非易失性內存(SRAM)上,MMDB系統開辟全局Redo日志緩沖區,讓事務在提交時事務的私有Redo日志寫入該緩沖區。檢查點程序將定期讀取日志緩沖區中的數據,將日志寫入磁盤,并驅動檢查點程序更新磁盤鏡象數據。各事務將按如下階段操作日志:

①事務啟動時,需要在事務的各自空間內建立私有Redo日志和私有Undo日志,并將在私有Redo日志中寫入事務啟動記錄。

②事務運行過程中,事務的每次更新操作,需要在私有Redo日志中添加Redo記錄,并在私有Undo日志中添加Undo記錄。

③事務提交時,需要按如下步驟完成:

㈠向事務的私有Redo日志內添加事體Commit記錄。

㈡將事務的私有Redo日志寫入全局Redo日志中。

㈢釋放事務的私有Redo日志和私有Undo日志,釋放事務所占用的其他資源,完成提交。

④事務Abort時,需要按照如下步驟完成:

㈠事務反向掃描私有Undo日志,回退事務的更新操作。

㈡釋放事務的私有Redo日志和私有Undo日志,釋放事務所占用的其他資源,結束事務。

由此可見,事務只在提交時才將私有Redo日志寫入全局日志緩沖區。從而也保證了,檢查點程序運行時,只看到己提交事務的Redo日志,磁盤上的數據鏡象也只反映已提交事務的更新操作。

2.2日志篩選算法

用日志產生規則能明顯減少日志產生的數量,但是在更新事務吞吐量較大的情況下,檢查點程序從全局日志緩沖區讀取Redo日志時,仍然可能會面對Redo日志量過大的問題。產生的原因是這樣的:如果對一份數據做兩次更新操作,那么兩個事務各自產生一條對同一物理地址上值更新的物理日志,但只有第2次更新事務產生的日志為有效的。本文利用日志篩選算法來避免日志量過大問題。該算法認為,當LOG1(T1,addr,valuel)和LOG2(T2,addr,value2)按照事務的提交順序通過日志篩選器時,當T1的提交時間在T2提交時間前,那么只有LOG2(T2,addr,value2)被認為是有效,而LOGI(T1,addr,valuel)被忽略。日志篩選器需要關注物理日志中被修改值的地址的相關性。對相同修改地址的物理日志依據日志的提交順序進行篩選。為加快日志的篩選速度,將全日志緩沖區劃分為多個區域,這將日志記錄中操作地址具有空間相關性的日志按照所屬事務的提交順序聚合在一個區域內,能加速日志篩選算法的篩選速度。使得在篩選過程中,只需在小范圍內(也就是一個區域)搜索可以被篩選的日志。當全局Redo日志緩沖區中的某一個區域滿時,就喚醒檢查點程序,將這一區域中的Redo日志寫入日志磁盤,并驅動備份更新發生器更新磁盤上的數據鏡象

3快速恢復算法

在系統崩潰后,MMDB系統需要通過恢復過程,將數據庫恢復到崩潰前的最近一致點上。在系統恢復過程中,重載程序將數據從磁盤鏡象上加載到MMDB系統中,同時根據日志,重做(Redo)或者取消(Undo)部分事務,來恢復數據庫的一致性。

快速恢復算法如下算法步驟:

①當系統崩潰重啟時,先啟動日志檢查和分配程序,檢查非易失性內存(SM)中提供給事務提交時用于寫入私有Redo日志的緩沖區中是否有完整寫入的Redo日志。如果有完整的Redo日志,則日志檢查和分配程序將這些完整的日志分配到全局Redo日志緩沖區的不同區域中。

②統計全局Redo日志緩沖區中的日志數量,并標記這些日志。當前Redo日志緩沖區中的日志將被用于恢復內存中MMDB系統的一致性,同時也要用于維護磁盤上數據鏡象的一致性。

③恢復程序從磁盤數據鏡象上加載一些重要的系統表以后,MMDB系統可以啟動,并可以接受新事務的請求。系統的正常事務處理和系統恢復過程同時進行。

④觸發檢查點程序從全局Redo日志緩沖區中讀取日志,驅動備份更新發生器更新磁盤上的數據鏡象。在這過程中,驅動備份更新發生器向緩沖區管理區詢問將被更新的記錄所在的鏡象數據頁面是否已經被加載到內存中。如果己經被加載,則不但需要更新磁盤上的鏡象數據頁,還需要更新內存中的數據頁面。如果全局Redo日志緩沖區中所有被標記的日志都已經被用于驅動備份更新發生器,那么此時備份更新發生器可以告訴重載程序恢復工作已經完成,沒有其他鏡象頁面需要更新。

⑤MMDB在接受新事務的請求時,對于事務的所訪問到的數據,如果數據還沒有被加載內存中時,則系統向重載程序要求將所需數據從磁盤鏡象上加載到內存中。此時,重載程序先要檢查要求加載的數據頁面是否會被備份更新發生器修改。如果是,則需要等待備份更新發生器更新鏡象頁面后再加載到內存中,否則就直接將鏡象頁面加載到內存中。

⑥當所有鏡象都加載完成后,MMDB系統恢復過程結束。

4結束語

恢復技術是保證內存數據庫運行可靠的關鍵技術。傳統日志恢復技術由于存在產生過多不必要的日志的缺點,本文研究了一種新的日志恢復技術來盡可能的減少日志數量,并在此基礎上提出了快速日志恢復算法。本文提出的恢復技術算法簡單可以大大的節約系統的資源。然而,內存數據庫恢復是一個十分復雜而龐大的技術,所以該方法還有待完善。

參考文獻

[1]劉云生,潘琳.實時數據庫系統的內存數據庫組織與故障恢復[J].小型微型計算機系統.200522(5):611-613

[2]劉云生,廖國瓊,付蔚.一個支持實時內存數據庫的恢復系統[J].小型微型計算機系統.200324(3):460-464

[3]龍玉國耿協堅.嵌入式實時內存數據庫恢復子系統的設計[J].計算機工程與應用.200417:179-180

[4]宋廣華,楊長生.基于混合日志的內存數據庫恢復子系統[J].浙江大學學報(理學版).200128(3):164-168

主站蜘蛛池模板: 乳山市| 五寨县| 娄底市| 新余市| 遂昌县| 大余县| 湟源县| 巴彦淖尔市| 山阳县| 南平市| 上林县| 奉节县| 双江| 溆浦县| 濮阳县| 南雄市| 双峰县| 扶沟县| 沾化县| 龙川县| 钟祥市| 繁昌县| 修水县| 故城县| 潞城市| 大同县| 涞源县| 额尔古纳市| 昭苏县| 洛浦县| 定边县| 万源市| 始兴县| 张北县| 兴文县| 遂平县| 晋城| 玉溪市| 北碚区| 赤壁市| 花莲市|