一种内存数据库重做日志文件的恢复方法技术

技术编号:7662597 阅读:275 留言:0更新日期:2012-08-09 07:09
本发明专利技术涉及一种内存数据库重做日志文件的恢复方法,步骤如下:(1)对重做日志文件按照产生时间先后进行排序;(2)按排序打开文件;(3)对打开的文件从后往前扫描重做日志数据项;(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。本发明专利技术的有益效果如下:解决数据在恢复过程中重复恢复的情况,避免了对同一数据项重复恢复,从而节省了恢复的时间。由于在数据恢复时,内存数据的恢复耗时较多,通过判断避免重复的内存拷贝。具体效果需要视内存重复数量,如果重复数据覆盖率有100%的情况,可以节省80%的内存操作时间。

【技术实现步骤摘要】

本专利技术涉及内存数据库系统领域,更具体地说,涉及。
技术介绍
重做日志是内存数据库恢复的重要技术之一。内存数据库使用检查点(Checkpoint)和重做日志结合的方式对数据进行保存。内存数据库在做事务处理时,会对每笔事务提交后的写操作进行记录,如图I所/Jn o在数据库停止或是崩溃后,重新启动,就回去读取检查点和重做日志文件,进行数据库恢复,如图2所示。现有的数据库系统的数据恢复是根据时间循序从前往后进行,如图3所示。上述的重做日志文件的恢复方法存在不足对于同一条数据项,如果在重做日志中出现多次,则会出现重复更新的情况,对于数据的恢复速度会造成影响。
技术实现思路
本专利技术的目的是解决以上提出的问题,提供一种用于在内存数据库恢复启动期间,快速处理恢复工作的方法。本专利技术的技术方案是这样的,所述的步骤如下(I)对重做日志文件按照产生时间先后进行排序;(2)按排序打开文件;(3)对打开的文件从后往前扫描重做日志数据项;(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。作为优选,重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。作为优选,步骤(I)所述的对重做日志文件按照产生时间先后进行排序,具体为对重做日志文件按照产生时间从后往前进行排序,产生时间晚的重做日志文件排在前,产生时间早的重做日志文件排在后。作为优选,步骤(2)所述的打开文 件,具体为选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。作为优选,步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。作为优选,步骤(4)具体为如果没有找到对应的内存数据项,则进行插入操作,更新内存数据项;如果找到对应的内存数据项,则忽略当前的重做日志数据项,并返回步骤⑶。作为优选,所述的日志数据项包括操作类型、事务号、数据表ID、内存项ID和数据内容。本专利技术的有益效果如下为了解决数据在恢复过程中重复恢复的情况,本专利技术所述的技术方案对现有技术的恢复方法进行了优化,避免了对同一数据项重复恢复,从而节省了恢复的时间。本专利技术的 主要目的就是,把文件中的数据以时间点从后往前恢复,这样就可以节约内存中恢复的时间。因为有的更新数据是不需要进行恢复的。对于ID相同的数据,只需要恢复最后面的一条数据。由于在数据恢复时,内存数据的恢复耗时较多,通过判断避免重复的内存拷贝。具体效果需要视内存重复数量,如果重复数据覆盖率有100 %的情况,可以节省80 %的内存操作时间。附图说明图I是内存数据库进行事务处理时的操作示意图;图2是数据库恢复的流程示意图;图3是现有的数据恢复方法的流程示意图;图4是本专利技术的数据恢复方法的流程示意图;图5是本专利技术实施例的内存项的结构示意图;图6是本专利技术实施例的数据项的结构示意图。具体实施例方式下面结合附图对本专利技术的实施例进行进一步详细说明,所述的步骤如下(I)对重做日志文件按照产生时间先后进行排序;(2)按排序打开文件;(3)对打开的文件从后往前扫描重做日志数据项;(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。步骤(I)所述的对重做日志文件按照产生时间先后进行排序,具体为对重做日志文件按照产生时间从后往前进行排序。步骤(2)所述的打开文件,具体为选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。步骤(4)具体为如果没有找到对应的内存数据项,则进行插入操作,并返回步骤(3);如果找到对应的内存数据项,则忽略当前的重做日志数据项,更新内存数据项。实施例本实施在Linux RedHat 5. 3操作系统上进行实现。内存项在数据库中如图4的方式组织。在数据表中,内存项ID与数据内容--对应。内存数据库在运行过程中会把对内存项的操作写到重做日志文件中。每笔操作可以看作一个数据项,包括操作类型、事务号、数据表ID、内存项ID和数据内容,如图5所示。在重做日志文件中,数据项按时间顺序写出。 当重做日志文件超过一定大小后,系统会关闭当前重做日志文件,并且生成新的重做日志文件,把后续的操作写到新建的重做日志文件中。在系统运行一段时间后会积累一定数量的重做日志文件,如下表所示。权利要求1.,其特征在于,所述的步骤如下 (1)对重做日志文件按照产生时间先后进行排序; (2)按排序打开文件; (3)对打开的文件从后往前扫描重做日志数据项; (4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。2.根据权利要求I所述的内存数据库重做日志文件的恢复方法,其特征在于,重做日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。3.根据权利要求I所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(I)所述的对重做日志文件按照产生时间先后进行排序,具体为对重做日志文件按照产生时间从后往前进行排序,产生时间晚的重做日志文件排在前,产生时间早的重做日志文件排在后。4.根据权利要求I所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(2)所述的打开文件,具体为选取链表头部文件,如果文件存在,则打开文件;如果文件不存在,则结束恢复。5.根据权利要求I所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(3)所述的对打开的文件从后往前扫描重做日志数据项,具体为对打开的文件从后往前扫描重做日志数据项,如果存在数据项,则进行步骤(4);如果不存在数据项,则返回步骤(2)。6.根据权利要求I所述的内存数据库重做日志文件的恢复方法,其特征在于,步骤(4)具体为如果没有找到对应的内存数据项,则进行插入操作,更新内存数据项;如果找到对应的内存数据项,则忽略当前的重做日志数据项,并返回步骤(3)。7.根据权利要求I至6任一项所述的内存数据库重做日志文件的恢复方法,其特征在于,所述的日志数据项包括操作类型、事务号、数据表ID、内存项ID和数据内容。全文摘要本专利技术涉及,步骤如下(1)对重做日志文件按照产生时间先后进行排序;(2)按排序打开文件;(3)对打开的文件从后往前扫描重做日志数据项;(4)查找与重做日志数据项相对应的内存数据项,如果没有找到对应的内存数据项,则进行插入操作;如果找到对应的内存数据项,则忽略当前的重做日志数据项。本专利技术的有益效果如下解决数据在恢复过程中重复恢复的情况,避免了对同一数据项重复恢复,从而节省了恢复的时间。由于在数据恢复时,内存数据的恢复耗时较多,通过判断避免重复的内存拷贝。具体效果需本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:幸锐
申请(专利权)人:杭州丰城信息技术有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1