面向非易失性內存的內存數(shù)據(jù)庫并行日志方法
【技術領域】
[0001 ] 本發(fā)明涉及一種內存數(shù)據(jù)庫并行日志方法,特別是一種面向非易失性內存的內存數(shù)據(jù)庫并行日志方法。
【背景技術】
[0002]目前,內存數(shù)據(jù)庫通過把數(shù)據(jù)常駐內存,獲得比磁盤數(shù)據(jù)庫快若干數(shù)據(jù)量的性能。在斷電或者軟件錯誤導致硬件宕機時,內存中的內容會消失。為了支持內存數(shù)據(jù)庫的可恢復性,必須把事務對數(shù)據(jù)的所有修改歷史,以日志記錄的方式,記錄在磁盤上。
[0003]日志記錄的內容包括數(shù)據(jù)修改以前的值(稱為前像,BeforeImage)、以及數(shù)據(jù)修改以后的值(稱為后像,After Image)。比如當事務把數(shù)據(jù)X從5,修改成7,然后又修改成10,那么必須記錄兩個日志記錄,分別是日志記錄I =〈X數(shù)據(jù)的位置,5,7>,日志記錄2 =〈X數(shù)據(jù)的位置,7,10>。在內存數(shù)據(jù)庫失敗以后,可以把上一個檢查點(Checkpoint),裝載到內存,然后把上一個檢查點以來的日志重新應用到數(shù)據(jù)上,即可把數(shù)據(jù)恢復到最新的狀態(tài)。比如檢查點里的數(shù)據(jù)X的初值裝載進來,為5,然后把日志記錄1,和日志記錄2應用到數(shù)據(jù)值上,把5修改成7,然后把7修改成10,數(shù)據(jù)即可恢復到最新狀態(tài)。
[0004]數(shù)據(jù)庫也可以從最初的狀態(tài),也就是數(shù)據(jù)庫為空的情況,把最初狀態(tài)以來的日志重新播放一遍,恢復到最新狀態(tài)。檢查點的設置,是不時地把數(shù)據(jù)庫的最新狀態(tài)保存一個完整的影像,恢復時,只需播放上次檢查點以來的日志即可,加快恢復過程。
[0005]現(xiàn)有技術的問題和缺點:對日志記錄進行前像和后像記錄的日志方法,其缺點是日志應用必須串行執(zhí)行,比如在上一個實例中,動作I (把5修改成7)和動作2(把7修改成10),必須嚴格按照記錄日志的順序進行應用,串行地進行日志掃描和應用,限制了內存數(shù)據(jù)庫恢復的效率。
[0006]另一方面,由于日志記錄應用的串行性,每個數(shù)據(jù)頁面(page),在所有的日志記錄應用完畢之前,不能保證其已經(jīng)恢復到最新狀態(tài),那么整個恢復過程中,所有的數(shù)據(jù)頁面都是不可用的。
【發(fā)明內容】
[0007]本發(fā)明的目的是要提供一種面向非易失性內存的內存數(shù)據(jù)庫并行日志方法,解決現(xiàn)有技術的數(shù)據(jù)庫恢復過程中限制內存數(shù)據(jù)庫恢復效率的問題。
[0008]本發(fā)明的目的是這樣實現(xiàn)的:該內存數(shù)據(jù)庫并行日志方法,具體如下:
[0009]在內存數(shù)據(jù)庫運行過程中,事務不斷地修改數(shù)據(jù),這些數(shù)據(jù)可能分布在不同的頁面上;對于每個數(shù)據(jù)的修改操作,記錄數(shù)據(jù)頁面ID,數(shù)據(jù)的位置信息即偏移量、以及差分日志即前像和后像的異或值;
[0010]然后把這些日志信息按照頁面ID進行分解,寫入隸屬頁面ID的非易失性內存中的緩沖區(qū);非易失性內存在掉電的情況下,仍然保持其數(shù)據(jù),于是保證了內存數(shù)據(jù)庫的可恢復性;一旦日志信息抵達非易失性內存,即日志信息已經(jīng)實現(xiàn)了持久化,事務可以提交了 ;
[0011]為每個頁面準備兩個非易失性內存的緩沖區(qū);一個用于不斷接收日志信息,保證事務的提交;另外一個是一個已滿的緩沖,用于寫到磁盤,日志記錄轉移到磁盤后,該緩沖處于待命狀態(tài);當某個頁面的非易失性內存緩沖已滿的時候,這些日志信息被轉移到磁盤,即寫入磁盤;如果此時有事務修改該頁面,生成了新的日志信息,這些日志信息寫入另外一個緩沖區(qū),兩個緩沖區(qū)一個用于接收當前活躍事務的日志,一個用于轉移日志到磁盤,兩者交替使用;
[0012]各個頁面的日志緩沖寫盤操作,不存在依賴關系,通過多線程技術并行執(zhí)行。
[0013]有益效果,由于采用了上述方案,基于數(shù)據(jù)的前像和后像,計算差分值,作為日志信息;差分值的應用復合交換律和結合律,于是日志可以進行隨意分組和亂序應用。利用這個特點,采用并行日志記錄方法,利用多路I/o實現(xiàn)并行日志記錄;恢復的時候以數(shù)據(jù)頁面為單位,應用該頁面的日志信息之后,頁面就達到可用狀態(tài),可以接受新事務的存取。解決了現(xiàn)有技術的數(shù)據(jù)庫恢復過程中限制內存數(shù)據(jù)庫恢復效率的問題,達到了本發(fā)明的目的。
[0014]與現(xiàn)有技術相比的優(yōu)點:
[0015](I)利用差分日志符合結合律和交換律的特點,把日志記錄按照數(shù)據(jù)頁面進行組織,暫時緩存在非易失性內存中,保證事務的可恢復性。當非易失性內存已經(jīng)滿的時候,把日志轉存到磁盤中。各個頁面的日志記錄,可以并行寫入磁盤,加快事務提交過程。
[0016](2)恢復過程中,各個數(shù)據(jù)頁面的恢復是獨立的,頁面的檢查點被裝載以后,頁面的日志被裝載和應用到數(shù)據(jù)上,該頁面即可恢復到最新狀態(tài),存取該頁面的新事務即可繼續(xù)運行,無需等待所有日志信息處理完畢。
【附圖說明】
:
[0017]圖1是本發(fā)明的差分日志的結合律與交換律圖。
[0018]圖2是本發(fā)明的面向非易失性內存的內存數(shù)據(jù)庫并行日志方法框架圖。
【具體實施方式】
[0019]該內存數(shù)據(jù)庫并行日志方法,具體如下:
[0020]在內存數(shù)據(jù)庫運行過程中,事務不斷地修改數(shù)據(jù),這些數(shù)據(jù)可能分布在不同的頁面上;對于每個數(shù)據(jù)的修改操作,記錄數(shù)據(jù)頁面ID,數(shù)據(jù)的位置信息即偏移量、以及差分日志即前像和后像的異或值;
[0021]然后把這些日志信息按照頁面ID進行分解,寫入隸屬頁面ID的非易失性內存中的緩沖區(qū);非易失性內存在掉電的情況下,仍然保持其數(shù)據(jù),于是保證了內存數(shù)據(jù)庫的可恢復性;一旦日志信息抵達非易失性內存,即日志信息已經(jīng)實現(xiàn)了持久化,事務可以提交了 ;
[0022]為每個頁面準備兩個非易失性內存的緩沖區(qū);一個用于不斷接收日志信息,保證事務的提交;另外一個是一個已滿的緩沖,用于寫到磁盤,日志記錄轉移到磁盤后,該緩沖處于待命狀態(tài);當某個頁面的非易失性內存緩沖已滿的時候,這些日志信息被轉移到磁盤,即寫入磁盤;如果此時有事務修改該頁面,生成了新的日志信息,這些日志信息寫入另外一個緩沖區(qū),兩個緩沖區(qū)一個用于接收當前活躍事務的日志,一個用于轉移日志到磁盤,兩者交替使用;
[0023]各個頁面的日志緩沖寫盤操作,不存在依賴關系,通過多線程技術并行執(zhí)行。
[0024]實施例1:本發(fā)明的并行日志方法依賴于差分日志的特點,下面通過一個實例說明該差分日志的具體計算及其符合交換律、結合律的特點。方法如下:
[0025]數(shù)據(jù)X的原值為5,二進制為0101,經(jīng)過第一次修改,變成7,二進制值為0111 ;進而經(jīng)過第二次修改,變成10,二進制值為1010 ;第一次改變的前像為0101,后像為0111,那么兩者的異或值為0010 ;第二次改變的前像為0111,后像為1010,那么兩者的異或值為1101 ;兩個日志記錄分別是日志記錄I =〈數(shù)據(jù)X的位置信息,0010〉,日志記錄2 =〈數(shù)據(jù)X的位置信息,1101〉;
[0026]異或操作的真值表為,O異或O = O, I異或I = 0,0異或I = 1,I異或O = I ;
[0027]差分日志符合結合律,把兩個日志記錄合并,即把0010和1101先進行異或操作,得到1111,然后應用到數(shù)據(jù)的原值上5,得到二進制值1010,這個數(shù)值正好是數(shù)據(jù)的最新值10即二進制值1010 ;
[0028]差分日志復合交換律,把日志記錄按照〈日志記錄1,日志記錄2>的順序應用到數(shù)據(jù)上,或者按照〈日志記錄2,日志記錄1>的順序應用到數(shù)據(jù)上,結果是一樣的,即0101即十進制5,先異或0010,再異或1101,得到1010即十進制10,0101即十進制5先異或1101,再異或0010,也得到1010即十進制10,參見圖2。
[0029]實施例2:【具體實施方式】
[0030](I)對于數(shù)據(jù)更新,計算前像和后像的異或值。
[0031](2)結合修改數(shù)據(jù)的位置信息,構成日志記錄,形如〈數(shù)據(jù)位置信息,前像和后像的異或值〉。
[0032](3)日志按照頁面ID進行分組,記錄到非易失性內存。
[0033](4)當某個事務的日志信息都寫入非易失性內存,事務可以提交。
[0034](5)針對某個頁面的日志非易失性內存緩沖已經(jīng)滿的時候,日志信息緩沖區(qū)整個被寫入磁盤。各個頁面的日志緩沖可以通過多路I/o寫入不同的磁盤設備。
[0035](6)在日志從非易失性內存緩沖中寫入磁盤的同時,如果有事務存取和修改該頁面,那么日志信息被寫入另外一個非易失性內存緩沖。我們?yōu)槊總€頁面準備了兩個非易失性內存緩沖,一個寫磁盤,一個接受新的日志信息,交替使用。
【主權項】
1.一種面向非易失性內存的內存數(shù)據(jù)庫并行日志方法,其特征是:面向非易失性內存的基于差分技術的并行日志方法,具體如下: 在內存數(shù)據(jù)庫運行過程中,事務不斷地修改數(shù)據(jù),這些數(shù)據(jù)可能分布在不同的頁面上;對于每個數(shù)據(jù)的修改操作,記錄數(shù)據(jù)頁面ID,數(shù)據(jù)的位置信息即偏移量、以及差分日志即前像和后像的異或值; 然后把這些日志信息按照頁面ID進行分解,寫入隸屬頁面ID的非易失性內存中的緩沖區(qū);非易失性內存在掉電的情況下,仍然保持其數(shù)據(jù),于是保證了內存數(shù)據(jù)庫的可恢復性;一旦日志信息抵達非易失性內存,即日志信息已經(jīng)實現(xiàn)了持久化,事務可以提交了 ; 為每個頁面準備兩個非易失性內存的緩沖區(qū);一個用于不斷接收日志信息,保證事務的提交;另外一個是一個已滿的緩沖,用于寫到磁盤,日志記錄轉移到磁盤后,該緩沖處于待命狀態(tài);當某個頁面的非易失性內存緩沖已滿的時候,這些日志信息被轉移到磁盤,即寫入磁盤;如果此時有事務修改該頁面,生成了新的日志信息,這些日志信息寫入另外一個緩沖區(qū),兩個緩沖區(qū)一個用于接收當前活躍事務的日志,一個用于轉移日志到磁盤,兩者交替使用; 各個頁面的日志緩沖寫盤操作,不存在依賴關系,通過多線程技術并行執(zhí)行。
【專利摘要】一種面向非易失性內存的內存數(shù)據(jù)庫并行日志方法,屬于內存數(shù)據(jù)庫并行日志方法。在內存數(shù)據(jù)庫運行過程中,事務不斷地修改數(shù)據(jù),這些數(shù)據(jù)可能分布在不同的頁面上;對于每個數(shù)據(jù)的修改操作,記錄數(shù)據(jù)頁面ID;然后把這些日志信息按照頁面ID進行分解,寫入隸屬頁面ID的非易失性內存中的緩沖區(qū);非易失性內存在掉電的情況下,仍然保持其數(shù)據(jù),于是保證了內存數(shù)據(jù)庫的可恢復性;一旦日志信息抵達非易失性內存,即日志信息已經(jīng)實現(xiàn)了持久化,事務可以提交了;各個頁面的日志緩沖寫盤操作,不存在依賴關系,通過多線程技術并行執(zhí)行。優(yōu)點:利用差分日志的結合律和交換律,把日志記錄按照數(shù)據(jù)頁面進行組織,暫時緩存在非易失性內存中,保證事務的可恢復性。
【IPC分類】G06F12/02, G06F11/14
【公開號】CN104899117
【申請?zhí)枴緾N201510336836
【發(fā)明人】周曉云, 覃雄派
【申請人】江蘇師范大學
【公開日】2015年9月9日
【申請日】2015年6月17日