一種新的內(nèi)存數(shù)據(jù)庫(kù)快速日志恢復(fù)技術(shù)_第1頁(yè)
一種新的內(nèi)存數(shù)據(jù)庫(kù)快速日志恢復(fù)技術(shù)_第2頁(yè)
一種新的內(nèi)存數(shù)據(jù)庫(kù)快速日志恢復(fù)技術(shù)_第3頁(yè)
一種新的內(nèi)存數(shù)據(jù)庫(kù)快速日志恢復(fù)技術(shù)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一種新的內(nèi)存數(shù)據(jù)庫(kù)快速日志恢復(fù)技術(shù)         關(guān)鍵字  內(nèi)存數(shù)據(jù)庫(kù);日志恢復(fù);檢查點(diǎn) 0  引言    內(nèi)存數(shù)據(jù)庫(kù)(MMDB)把數(shù)據(jù)全部或者當(dāng)前工作部分駐留在內(nèi)存中,消除了傳統(tǒng)磁盤(pán)數(shù)據(jù)庫(kù)系統(tǒng)中I/O瓶頸,極大的提高了系統(tǒng)的性能和吞吐量,但是由于所有操作都作用于內(nèi)存數(shù)據(jù)庫(kù)的主拷貝上,數(shù)據(jù)庫(kù)及易遭到操作系統(tǒng)和應(yīng)用軟件造成的破壞,因此MMDB的恢復(fù)技術(shù)十分關(guān)鍵。日志(Logging)恢復(fù)是傳統(tǒng)的MMDB恢復(fù)技術(shù)之一,它能滿足當(dāng)前MMDB系統(tǒng)對(duì)事務(wù)響應(yīng)和快速系統(tǒng)恢復(fù)的

2、要求,但是在大量事務(wù)吞吐量情況下造成的日志暴增所帶來(lái)很大問(wèn)題,會(huì)對(duì)MMDB性能產(chǎn)生很大影響。    本文提出MMDB系統(tǒng)快速日志恢復(fù)技術(shù),它是在不阻礙系統(tǒng)正常運(yùn)行的情況下,控制日志的產(chǎn)生數(shù)量,使得在系統(tǒng)崩潰并重新啟動(dòng)時(shí),能以最快的速度恢復(fù)到系統(tǒng)崩潰前的最近一致點(diǎn)上。1  系統(tǒng)構(gòu)架設(shè)計(jì)    快速恢復(fù)模型的整體架構(gòu)如圖1所示。事務(wù)處理模塊負(fù)責(zé)根據(jù)用戶請(qǐng)求產(chǎn)生事務(wù),并由事務(wù)管理器調(diào)度。事務(wù)管理器將負(fù)責(zé)各個(gè)事務(wù)的日志記錄,交給日志產(chǎn)生規(guī)則處理。檢查點(diǎn)模塊根據(jù)日志產(chǎn)生規(guī)則才產(chǎn)生的日志數(shù)量動(dòng)態(tài)調(diào)整檢查點(diǎn)啟動(dòng)時(shí)間。當(dāng)日志記錄數(shù)達(dá)到一定值

3、時(shí),檢查點(diǎn)程序啟動(dòng)。它讀取所有日志記錄,交給日志篩選器。日志篩選器根據(jù)篩選算法,從當(dāng)前所有日志項(xiàng)中篩選出實(shí)際有效的日志記錄,并將這些有效日志記錄交給日志分發(fā)結(jié)點(diǎn)。日志分發(fā)結(jié)點(diǎn)主要做兩項(xiàng)工作:第一是它將日志傳送給日志磁盤(pán)管理器,由其負(fù)責(zé)將日志回寫(xiě)到日志磁盤(pán)上,第二是日志分發(fā)結(jié)點(diǎn)將日志傳送給備份更新發(fā)生器。備份更新發(fā)生器利用快速恢復(fù)算法,觸發(fā)各類更新操作,根據(jù)日志更新磁盤(pán)上的數(shù)據(jù)。圖1 快速恢復(fù)模型的整體架構(gòu)    該快速恢復(fù)模型具有如下的特點(diǎn):    快速恢復(fù)模型以日志驅(qū)動(dòng)方式做檢查點(diǎn),異步更新磁盤(pán)上的備份數(shù)據(jù)鏡象。 

4、0;  系統(tǒng)只維護(hù)全局Redo日志,以Redo日志來(lái)驅(qū)動(dòng)備份更新發(fā)生器,各個(gè)事務(wù)維護(hù)私有Redo日志和Undo日志在事務(wù)提交時(shí)將私有Redo日志寫(xiě)入全局Redo日志中。    使用日志篩選算法,近一步減少Redo日志的數(shù)量,提升檢查點(diǎn)程序的性能。    備份數(shù)據(jù)鏡象只反應(yīng)己提交事務(wù)的更新?tīng)顟B(tài),因此在系統(tǒng)重載時(shí)不需要回退未提交的事務(wù)。    快速恢復(fù)算法為并發(fā)重載算法。在系統(tǒng)恢復(fù)過(guò)程中,能繼續(xù)接受新事務(wù)的請(qǐng)求。2  快速日志驅(qū)動(dòng)檢查點(diǎn)    快速日志驅(qū)動(dòng)檢查

5、點(diǎn)的基本思想是,檢查點(diǎn)程序仍然由日志來(lái)驅(qū)動(dòng),根據(jù)讀取到的日志項(xiàng)來(lái)更新數(shù)據(jù)鏡象上的內(nèi)容,維持?jǐn)?shù)據(jù)鏡象與內(nèi)存中數(shù)據(jù)庫(kù)的基本同步。但是,與以往日志驅(qū)動(dòng)檢查點(diǎn)算法不同的是,它通過(guò)日志產(chǎn)生規(guī)則和日志篩選算法兩個(gè)策略克服了以往日志驅(qū)動(dòng)檢查點(diǎn)算法中日志數(shù)量可能過(guò)快增長(zhǎng)的問(wèn)題。2.1 日志產(chǎn)生規(guī)則    快速日志驅(qū)動(dòng)檢查點(diǎn)算法中設(shè)立的日志產(chǎn)生規(guī)則是:系統(tǒng)中日志被分為全局日志和私有日志兩類。系統(tǒng)只維護(hù)全局Redo日志,而不維護(hù)Undo日志,由事務(wù)自身維護(hù)私有的Redo日志和Undo日志。在事務(wù)提交時(shí),依照事務(wù)提交的先后順序,將事務(wù)的私有Redo日志添加到全局Redo日志中。因此,在

6、事務(wù)運(yùn)行過(guò)程中,會(huì)產(chǎn)生Redo日志和Undo日志。Redo日志用于在系統(tǒng)恢復(fù)過(guò)程中,重做已提交事務(wù)。而Undo日志用于在事務(wù)Abort時(shí)回退事務(wù),或者在系統(tǒng)恢復(fù)過(guò)程中回退未提交的事務(wù)。如果恢復(fù)模型的設(shè)計(jì)能夠保證系統(tǒng)恢復(fù)過(guò)程中,沒(méi)有需要回退的未提交事務(wù),那么系統(tǒng)只需要讀取Redo日志而不需要讀取Undo日志。因而系統(tǒng)只需要維護(hù)全局的Redo日志,而不需要維護(hù)Undo日志,將Undo日志交給事務(wù)自身維護(hù),Undo日志只用于事務(wù)自身Abort時(shí)回退。這樣就可以減少全局日志的總量。    圖2具體描述了全局日志和私有日志的使用。在事務(wù)T1,T2, T3的內(nèi)存空間內(nèi),各自維

7、護(hù)自己的私有Redo日志和Undo日志。在非易失性內(nèi)存(SRAM)上,MMDB系統(tǒng)開(kāi)辟全局Redo日志緩沖區(qū),讓事務(wù)在提交時(shí)事務(wù)的私有Redo日志寫(xiě)入該緩沖區(qū)。檢查點(diǎn)程序?qū)⒍ㄆ谧x取日志緩沖區(qū)中的數(shù)據(jù),將日志寫(xiě)入磁盤(pán),并驅(qū)動(dòng)檢查點(diǎn)程序更新磁盤(pán)鏡象數(shù)據(jù)。圖2 全局日志和私有日志各事務(wù)將按如下階段操作日志:     事務(wù)啟動(dòng)時(shí),需要在事務(wù)的各自空間內(nèi)建立私有Redo日志和私有Undo日志,并將在私有Redo日志中寫(xiě)入事務(wù)啟動(dòng)記錄。    事務(wù)運(yùn)行過(guò)程中,事務(wù)的每次更新操作,需要在私有Redo日志中添加Redo記錄,并在私有Undo日志中添加

8、Undo記錄。    事務(wù)提交時(shí),需要按如下步驟完成:    向事務(wù)的私有Redo日志內(nèi)添加事體Commit記錄。    將事務(wù)的私有Redo日志寫(xiě)入全局Redo日志中。    釋放事務(wù)的私有Redo日志和私有Undo日志,釋放事務(wù)所占用的其他資源,完成提交。    事務(wù)Abort時(shí),需要按照如下步驟完成:    事務(wù)反向掃描私有Undo日志,回退事務(wù)的更新操作。    釋放事務(wù)的私有R

9、edo日志和私有Undo日志,釋放事務(wù)所占用的其他資源,結(jié)束事務(wù)。    由此可見(jiàn),事務(wù)只在提交時(shí)才將私有Redo日志寫(xiě)入全局日志緩沖區(qū)。從而也保證了,檢查點(diǎn)程序運(yùn)行時(shí),只看到己提交事務(wù)的Redo日志,磁盤(pán)上的數(shù)據(jù)鏡象也只反映已提交事務(wù)的更新操作。    用日志產(chǎn)生規(guī)則能明顯減少日志產(chǎn)生的數(shù)量,但是在更新事務(wù)吞吐量較大的情況下,檢查點(diǎn)程序從全局日志緩沖區(qū)讀取Redo日志時(shí),仍然可能會(huì)面對(duì)Redo日志量過(guò)大的問(wèn)題。產(chǎn)生的原因是這樣的:如果對(duì)一份數(shù)據(jù)做兩次更新操作,那么兩個(gè)事務(wù)各自產(chǎn)生一條對(duì)同一物理地址上值更新的物理日志,但只有第2次更新

10、事務(wù)產(chǎn)生的日志為有效的。本文利用日志篩選算法來(lái)避免日志量過(guò)大問(wèn)題。該算法認(rèn)為,當(dāng)LOG1(T1,addr,valuel)和LOG2(T2, addr, value2)按照事務(wù)的提交順序通過(guò)日志篩選器時(shí),當(dāng)T1的提交時(shí)間在T2提交時(shí)間前,那么只有LOG2(T2, addr, value2)被認(rèn)為是有效,而LOGI(T1,addr,valuel)被忽略。日志篩選器需要關(guān)注物理日志中被修改值的地址的相關(guān)性。對(duì)相同修改地址的物理日志依據(jù)日志的提交順序進(jìn)行篩選。為加快日志的篩選速度,將全日志緩沖區(qū)劃分為多個(gè)區(qū)域,這將日志記錄中操作地址具有空間相關(guān)性的日志按照所屬事務(wù)的提交順序聚合在一個(gè)區(qū)域內(nèi),能加速日志

11、篩選算法的篩選速度。使得在篩選過(guò)程中,只需在小范圍內(nèi)(也就是一個(gè)區(qū)域)搜索可以被篩選的日志。當(dāng)全局Redo日志緩沖區(qū)中的某一個(gè)區(qū)域滿時(shí),就喚醒檢查點(diǎn)程序,將這一區(qū)域中的Redo日志寫(xiě)入日志磁盤(pán),并驅(qū)動(dòng)備份更新發(fā)生器更新磁盤(pán)上的數(shù)據(jù)鏡象3  快速恢復(fù)算法    在系統(tǒng)崩潰后,MMDB系統(tǒng)需要通過(guò)恢復(fù)過(guò)程,將數(shù)據(jù)庫(kù)恢復(fù)到崩潰前的最近一致點(diǎn)上。在系統(tǒng)恢復(fù)過(guò)程中,重載程序?qū)?shù)據(jù)從磁盤(pán)鏡象上加載到MMDB系統(tǒng)中,同時(shí)根據(jù)日志,重做(Redo)或者取消(Undo)部分事務(wù),來(lái)恢復(fù)數(shù)據(jù)庫(kù)的一致性。    快速恢復(fù)算法如下算法步驟:

12、0;   當(dāng)系統(tǒng)崩潰重啟時(shí),先啟動(dòng)日志檢查和分配程序,檢查非易失性內(nèi)存(SM)中提供給事務(wù)提交時(shí)用于寫(xiě)入私有Redo日志的緩沖區(qū)中是否有完整寫(xiě)入的Redo日志。如果有完整的Redo日志,則日志檢查和分配程序?qū)⑦@些完整的日志分配到全局Redo日志緩沖區(qū)的不同區(qū)域中。    統(tǒng)計(jì)全局Redo日志緩沖區(qū)中的日志數(shù)量,并標(biāo)記這些日志。當(dāng)前Redo日志緩沖區(qū)中的日志將被用于恢復(fù)內(nèi)存中MMDB系統(tǒng)的一致性,同時(shí)也要用于維護(hù)磁盤(pán)上數(shù)據(jù)鏡象的一致性。    恢復(fù)程序從磁盤(pán)數(shù)據(jù)鏡象上加載一些重要的系統(tǒng)表以后,MMDB系統(tǒng)可以啟動(dòng),并

13、可以接受新事務(wù)的請(qǐng)求。系統(tǒng)的正常事務(wù)處理和系統(tǒng)恢復(fù)過(guò)程同時(shí)進(jìn)行。    觸發(fā)檢查點(diǎn)程序從全局Redo日志緩沖區(qū)中讀取日志,驅(qū)動(dòng)備份更新發(fā)生器更新磁盤(pán)上的數(shù)據(jù)鏡象。在這過(guò)程中,驅(qū)動(dòng)備份更新發(fā)生器向緩沖區(qū)管理區(qū)詢問(wèn)將被更新的記錄所在的鏡象數(shù)據(jù)頁(yè)面是否已經(jīng)被加載到內(nèi)存中。如果己經(jīng)被加載,則不但需要更新磁盤(pán)上的鏡象數(shù)據(jù)頁(yè),還需要更新內(nèi)存中的數(shù)據(jù)頁(yè)面。如果全局Redo日志緩沖區(qū)中所有被標(biāo)記的日志都已經(jīng)被用于驅(qū)動(dòng)備份更新發(fā)生器,那么此時(shí)備份更新發(fā)生器可以告訴重載程序恢復(fù)工作已經(jīng)完成,沒(méi)有其他鏡象頁(yè)面需要更新。    MMDB在接受新事務(wù)的請(qǐng)求時(shí),

14、對(duì)于事務(wù)的所訪問(wèn)到的數(shù)據(jù),如果數(shù)據(jù)還沒(méi)有被加載內(nèi)存中時(shí),則系統(tǒng)向重載程序要求將所需數(shù)據(jù)從磁盤(pán)鏡象上加載到內(nèi)存中。此時(shí),重載程序先要檢查要求加載的數(shù)據(jù)頁(yè)面是否會(huì)被備份更新發(fā)生器修改。如果是,則需要等待備份更新發(fā)生器更新鏡象頁(yè)面后再加載到內(nèi)存中,否則就直接將鏡象頁(yè)面加載到內(nèi)存中。    當(dāng)所有鏡象都加載完成后,MMDB系統(tǒng)恢復(fù)過(guò)程結(jié)束。4  結(jié)束語(yǔ)    恢復(fù)技術(shù)是保證內(nèi)存數(shù)據(jù)庫(kù)運(yùn)行可靠的關(guān)鍵技術(shù)。傳統(tǒng)日志恢復(fù)技術(shù)由于存在產(chǎn)生過(guò)多不必要的日志的缺點(diǎn),本文研究了一種新的日志恢復(fù)技術(shù)來(lái)盡可能的減少日志數(shù)量,并在此基礎(chǔ)上提出了快速日志恢復(fù)算法。本文提出的恢復(fù)技術(shù)算法簡(jiǎn)單可以大大的節(jié)約系統(tǒng)的資源。然而,內(nèi)存數(shù)據(jù)庫(kù)恢復(fù)是一個(gè)十分復(fù)雜而龐大的技術(shù),所以該方法還有待完善。參考文獻(xiàn)1劉云生,潘琳. 實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)的內(nèi)存數(shù)據(jù)庫(kù)組織與故障恢復(fù)J. 小型微型計(jì)算機(jī)系統(tǒng).2005 22(5):611-6132劉云生,廖國(guó)瓊,付蔚.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論