发明名称 一种内存数据库的并行恢复方法
摘要 本发明公开了一种内存数据库的并行恢复方法,包括以下步骤:a.日志导入到缓存采用多个任务,通过日志系统并行的读取日志,这些读取日志的任务按照一定的协议,将日志按照原日志文件中的顺序被重新组织在内存中;b.这个日志序列被分配模块按照一个均衡负载的算法分配给多个队列,并且这个分配工作还遵守日志同步的两个规则;c.多个任务并发执行日志恢复,它们从各自对应的队列中取得日志,然后执行日志恢复,多日志恢复任务间也遵守日志同步的两个规则。该方法采用日志导入任务的调度算法、并行恢复任务的调度算法、恢复任务负载均衡算法、日志文件导入任务数与恢复任务数自适应的平衡算法,可以实现内存数据库的快速恢复。
申请公布号 CN101625655B 申请公布日期 2011.05.25
申请号 CN200910305844.6 申请日期 2009.08.20
申请人 华中科技大学 发明人 王非;卢正新;黄本雄;王芙蓉;吴惠君
分类号 G06F11/14(2006.01)I 主分类号 G06F11/14(2006.01)I
代理机构 北京市德权律师事务所 11302 代理人 周发军
主权项 一种内存数据库的并行恢复方法 ,装载映像部分先从数据库内存映像备份文件中装载映像到数据库内存中,然后日志恢复部分再从日志系统读取日志进行恢复操作,对数据库内存进行修正,直到恢复出数据库故障前的某个完整一致状态,包括以下步骤:a.日志导入到缓存采用多个任务,通过日志系统并行的读取日志,采用日志导入任务的调度算法,日志导入部分通过日志系统来读取日志,日志系统提供统一的日志视图,该视图使得通过日志系统来访问日志不必考虑文件是在磁盘上还是在文件缓存中;日志读取部分采用一种分段读取的方法,它可以控制读取的任务数,来达到不同的读取速度的要求;该分段读取方法使用的内存缓存区数据结构使得并行读入的日志在内存重组后仍然保持原来的顺序;b.这个日志序列被分配模块按照一个均衡负载的算法分配给多个队列,并且这个分配工作还遵守日志同步的两个规则:1)连续的一片并行日志可以被并行的执行恢复而不影响恢复后数据库的完整一致,2)串行日志之间只能被串行的执行恢复;c.多个任务并发执行日志恢复,它们从各自对应的队列中取得日志,然后执行日志恢复,多日志恢复任务间也遵守日志同步的两个规则。2、根据权利要求1所述的一种内存数据库的并行恢复方法,其特征在于,所述步骤b采用恢复任务负载均衡算法,将读入到内存缓存的日志按照日志同步的规则分配给日志执行步骤;该均衡算法采用堆的调整方法选择要分配给的日志恢复任务;堆的调整方法调整出待处理日志队列最小的队列,将待处理的日志插入队列中。3、根据权利要求1所述的一种内存数据库的并行恢复方法,其特征在于,所述步骤c采用并行恢复任务的调度算法,日志并行恢复部分依据两种日志类型总结了两个执行并行恢复的规则,然后依据这两个规则对于不同类型的日志分别执行并行恢复或串行恢复;并行恢复部分将日志分段,依据规则在每段内进行并行恢复,在段间保持串行恢复。4、根据权利要求1至3任一项所述的一种内存数据库的并行恢复方法,其特征在于,还包括一种日志文件导入任务数与恢复任务数自适应的平衡算法,该算法使得读取的日志和日志的恢复协调进行,使得内存中日志缓冲区的使用最为有效;它使得缓存待分配日志缓冲区中缓存的日志数量最小但是又不为空,并使得待处理缓冲区中日志数量为空。5、根据权利要求1所述的一种内存数据库的并行恢复方法,其特征在于,所述读取日志的任务一次读取一个日志文件,每个日志文件中存放的是完整的日志序列;日志并行读入部分启动多个日志读入任务,开始时每个任务负责最前面的日志几个日志文件的读入,当这些任务完成自己任务的日志读入任务后再依次读入后面的日志文件;日志读入任务将日志读入到日志缓存区中,该缓存区采用块链的方式组织;每个任务自己分配一块内存存放自己的日志,并将块链入缓存区中,部分操作涉及共享数据需要加互斥锁。6、根据权利要求4所述的一种内存数据库的并行恢复方法,其特征在于,所述平衡算法将日志导入任务数设为m,日志恢复任务数设为n ,A代表数据库日志缓冲队列日志量,B代表线程日志缓冲队列日志和量;流入A的流量是M,流出B的流量是N,从A流向B的流量是D,ΔI=M‑D,ΔO=D‑N,初始时m=n=A=B=0。7、根据权利要求6所述的一种内存数据库的并行恢复方法,其特征在于,所述m主要依据A中的变化量ΔI来变化,若ΔI>0表明数据库日志缓冲队列中日志变多,系统已经来不及将这些日志分配处理,所以减少m的数量;n综合考虑各种因素来调整,若ΔO>0表明线程日志缓冲队列日志和变大,恢复线程已经来不及处理这些日志了,所以增加n的数量,若ΔI+ΔO<0表明整个系统的输出能力比输入能力强,n数量过大浪费了系统资源,所以减少n的数量。
地址 430074 湖北省武汉市洪山区珞瑜路1037号