面向非易失性内存的内存数据库并行日志方法

xiaoxiao2020-10-23  18

面向非易失性内存的内存数据库并行日志方法
【技术领域】
[0001 ] 本发明涉及一种内存数据库并行日志方法,特别是一种面向非易失性内存的内存数据库并行日志方法。
【背景技术】
[0002]目前,内存数据库通过把数据常驻内存,获得比磁盘数据库快若干数据量的性能。在断电或者软件错误导致硬件宕机时,内存中的内容会消失。为了支持内存数据库的可恢复性,必须把事务对数据的所有修改历史,以日志记录的方式,记录在磁盘上。
[0003]日志记录的内容包括数据修改以前的值(称为前像,BeforeImage)、以及数据修改以后的值(称为后像,After Image)。比如当事务把数据X从5,修改成7,然后又修改成10,那么必须记录两个日志记录,分别是日志记录I =〈X数据的位置,5,7>,日志记录2 =〈X数据的位置,7,10>。在内存数据库失败以后,可以把上一个检查点(Checkpoint),装载到内存,然后把上一个检查点以来的日志重新应用到数据上,即可把数据恢复到最新的状态。比如检查点里的数据X的初值装载进来,为5,然后把日志记录1,和日志记录2应用到数据值上,把5修改成7,然后把7修改成10,数据即可恢复到最新状态。
[0004]数据库也可以从最初的状态,也就是数据库为空的情况,把最初状态以来的日志重新播放一遍,恢复到最新状态。检查点的设置,是不时地把数据库的最新状态保存一个完整的影像,恢复时,只需播放上次检查点以来的日志即可,加快恢复过程。
[0005]现有技术的问题和缺点:对日志记录进行前像和后像记录的日志方法,其缺点是日志应用必须串行执行,比如在上一个实例中,动作I (把5修改成7)和动作2(把7修改成10),必须严格按照记录日志的顺序进行应用,串行地进行日志扫描和应用,限制了内存数据库恢复的效率。
[0006]另一方面,由于日志记录应用的串行性,每个数据页面(page),在所有的日志记录应用完毕之前,不能保证其已经恢复到最新状态,那么整个恢复过程中,所有的数据页面都是不可用的。

【发明内容】

[0007]本发明的目的是要提供一种面向非易失性内存的内存数据库并行日志方法,解决现有技术的数据库恢复过程中限制内存数据库恢复效率的问题。
[0008]本发明的目的是这样实现的:该内存数据库并行日志方法,具体如下:
[0009]在内存数据库运行过程中,事务不断地修改数据,这些数据可能分布在不同的页面上;对于每个数据的修改操作,记录数据页面ID,数据的位置信息即偏移量、以及差分日志即前像和后像的异或值;
[0010]然后把这些日志信息按照页面ID进行分解,写入隶属页面ID的非易失性内存中的缓冲区;非易失性内存在掉电的情况下,仍然保持其数据,于是保证了内存数据库的可恢复性;一旦日志信息抵达非易失性内存,即日志信息已经实现了持久化,事务可以提交了 ;
[0011]为每个页面准备两个非易失性内存的缓冲区;一个用于不断接收日志信息,保证事务的提交;另外一个是一个已满的缓冲,用于写到磁盘,日志记录转移到磁盘后,该缓冲处于待命状态;当某个页面的非易失性内存缓冲已满的时候,这些日志信息被转移到磁盘,即写入磁盘;如果此时有事务修改该页面,生成了新的日志信息,这些日志信息写入另外一个缓冲区,两个缓冲区一个用于接收当前活跃事务的日志,一个用于转移日志到磁盘,两者交替使用;
[0012]各个页面的日志缓冲写盘操作,不存在依赖关系,通过多线程技术并行执行。
[0013]有益效果,由于采用了上述方案,基于数据的前像和后像,计算差分值,作为日志信息;差分值的应用复合交换律和结合律,于是日志可以进行随意分组和乱序应用。利用这个特点,采用并行日志记录方法,利用多路I/o实现并行日志记录;恢复的时候以数据页面为单位,应用该页面的日志信息之后,页面就达到可用状态,可以接受新事务的存取。解决了现有技术的数据库恢复过程中限制内存数据库恢复效率的问题,达到了本发明的目的。
[0014]与现有技术相比的优点:
[0015](I)利用差分日志符合结合律和交换律的特点,把日志记录按照数据页面进行组织,暂时缓存在非易失性内存中,保证事务的可恢复性。当非易失性内存已经满的时候,把日志转存到磁盘中。各个页面的日志记录,可以并行写入磁盘,加快事务提交过程。
[0016](2)恢复过程中,各个数据页面的恢复是独立的,页面的检查点被装载以后,页面的日志被装载和应用到数据上,该页面即可恢复到最新状态,存取该页面的新事务即可继续运行,无需等待所有日志信息处理完毕。
【附图说明】
:
[0017]图1是本发明的差分日志的结合律与交换律图。
[0018]图2是本发明的面向非易失性内存的内存数据库并行日志方法框架图。
【具体实施方式】
[0019]该内存数据库并行日志方法,具体如下:
[0020]在内存数据库运行过程中,事务不断地修改数据,这些数据可能分布在不同的页面上;对于每个数据的修改操作,记录数据页面ID,数据的位置信息即偏移量、以及差分日志即前像和后像的异或值;
[0021]然后把这些日志信息按照页面ID进行分解,写入隶属页面ID的非易失性内存中的缓冲区;非易失性内存在掉电的情况下,仍然保持其数据,于是保证了内存数据库的可恢复性;一旦日志信息抵达非易失性内存,即日志信息已经实现了持久化,事务可以提交了 ;
[0022]为每个页面准备两个非易失性内存的缓冲区;一个用于不断接收日志信息,保证事务的提交;另外一个是一个已满的缓冲,用于写到磁盘,日志记录转移到磁盘后,该缓冲处于待命状态;当某个页面的非易失性内存缓冲已满的时候,这些日志信息被转移到磁盘,即写入磁盘;如果此时有事务修改该页面,生成了新的日志信息,这些日志信息写入另外一个缓冲区,两个缓冲区一个用于接收当前活跃事务的日志,一个用于转移日志到磁盘,两者交替使用;
[0023]各个页面的日志缓冲写盘操作,不存在依赖关系,通过多线程技术并行执行。
[0024]实施例1:本发明的并行日志方法依赖于差分日志的特点,下面通过一个实例说明该差分日志的具体计算及其符合交换律、结合律的特点。方法如下:
[0025]数据X的原值为5,二进制为0101,经过第一次修改,变成7,二进制值为0111 ;进而经过第二次修改,变成10,二进制值为1010 ;第一次改变的前像为0101,后像为0111,那么两者的异或值为0010 ;第二次改变的前像为0111,后像为1010,那么两者的异或值为1101 ;两个日志记录分别是日志记录I =〈数据X的位置信息,0010〉,日志记录2 =〈数据X的位置信息,1101〉;
[0026]异或操作的真值表为,O异或O = O, I异或I = 0,0异或I = 1,I异或O = I ;
[0027]差分日志符合结合律,把两个日志记录合并,即把0010和1101先进行异或操作,得到1111,然后应用到数据的原值上5,得到二进制值1010,这个数值正好是数据的最新值10即二进制值1010 ;
[0028]差分日志复合交换律,把日志记录按照〈日志记录1,日志记录2>的顺序应用到数据上,或者按照〈日志记录2,日志记录1>的顺序应用到数据上,结果是一样的,即0101即十进制5,先异或0010,再异或1101,得到1010即十进制10,0101即十进制5先异或1101,再异或0010,也得到1010即十进制10,参见图2。
[0029]实施例2:【具体实施方式】
[0030](I)对于数据更新,计算前像和后像的异或值。
[0031](2)结合修改数据的位置信息,构成日志记录,形如〈数据位置信息,前像和后像的异或值〉。
[0032](3)日志按照页面ID进行分组,记录到非易失性内存。
[0033](4)当某个事务的日志信息都写入非易失性内存,事务可以提交。
[0034](5)针对某个页面的日志非易失性内存缓冲已经满的时候,日志信息缓冲区整个被写入磁盘。各个页面的日志缓冲可以通过多路I/o写入不同的磁盘设备。
[0035](6)在日志从非易失性内存缓冲中写入磁盘的同时,如果有事务存取和修改该页面,那么日志信息被写入另外一个非易失性内存缓冲。我们为每个页面准备了两个非易失性内存缓冲,一个写磁盘,一个接受新的日志信息,交替使用。
【主权项】
1.一种面向非易失性内存的内存数据库并行日志方法,其特征是:面向非易失性内存的基于差分技术的并行日志方法,具体如下: 在内存数据库运行过程中,事务不断地修改数据,这些数据可能分布在不同的页面上;对于每个数据的修改操作,记录数据页面ID,数据的位置信息即偏移量、以及差分日志即前像和后像的异或值; 然后把这些日志信息按照页面ID进行分解,写入隶属页面ID的非易失性内存中的缓冲区;非易失性内存在掉电的情况下,仍然保持其数据,于是保证了内存数据库的可恢复性;一旦日志信息抵达非易失性内存,即日志信息已经实现了持久化,事务可以提交了 ; 为每个页面准备两个非易失性内存的缓冲区;一个用于不断接收日志信息,保证事务的提交;另外一个是一个已满的缓冲,用于写到磁盘,日志记录转移到磁盘后,该缓冲处于待命状态;当某个页面的非易失性内存缓冲已满的时候,这些日志信息被转移到磁盘,即写入磁盘;如果此时有事务修改该页面,生成了新的日志信息,这些日志信息写入另外一个缓冲区,两个缓冲区一个用于接收当前活跃事务的日志,一个用于转移日志到磁盘,两者交替使用; 各个页面的日志缓冲写盘操作,不存在依赖关系,通过多线程技术并行执行。
【专利摘要】一种面向非易失性内存的内存数据库并行日志方法,属于内存数据库并行日志方法。在内存数据库运行过程中,事务不断地修改数据,这些数据可能分布在不同的页面上;对于每个数据的修改操作,记录数据页面ID;然后把这些日志信息按照页面ID进行分解,写入隶属页面ID的非易失性内存中的缓冲区;非易失性内存在掉电的情况下,仍然保持其数据,于是保证了内存数据库的可恢复性;一旦日志信息抵达非易失性内存,即日志信息已经实现了持久化,事务可以提交了;各个页面的日志缓冲写盘操作,不存在依赖关系,通过多线程技术并行执行。优点:利用差分日志的结合律和交换律,把日志记录按照数据页面进行组织,暂时缓存在非易失性内存中,保证事务的可恢复性。
【IPC分类】G06F12/02, G06F11/14
【公开号】CN104899117
【申请号】CN201510336836
【发明人】周晓云, 覃雄派
【申请人】江苏师范大学
【公开日】2015年9月9日
【申请日】2015年6月17日

最新回复(0)