一种基于闪存的数据库恢复方法技术

技术编号:5290860 阅读:233 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种基于闪存的数据库恢复方法,其特征在于:它包括一内存、一闪存、一检查点管理模块、一系统启动模块和一系统关闭模块,内存中存储有数据页缓冲区、日志缓冲区和日志区摘要;闪存中存储有日志区、数据区、页表和用来标识闪存空间分配状况的位示图;检查点管理模块在日志区中设立检查点;系统启动模块启动时需要扫描日志区,将获得的日志和数据进行合并;系统关闭模块启动时需要在日志区中插入一系列日志,同时进行一系列的操作来完成系统关闭;日志缓冲区记录一部分日志,并把日志刷写到闪存上。本发明专利技术能减少对闪存的擦除,并充分发挥闪存的优越性。本发明专利技术可以广泛应用于系统数据库的恢复中。

【技术实现步骤摘要】

本专利技术涉及一种数据库恢复方法,特别是关于一种基于闪存的数据库恢复方 法。
技术介绍
随着闪存的广泛使用,越来越多的数据存储在闪存设备之上。闪存数据管理成 为了一个新的研究领域。基于闪存的数据库技术面临着巨大挑战,引起了业界越来越多 的关注。如果将现有的针对磁盘存储设备设计的数据库技术直接运行在闪存上,在查询 处理中读的速度只提高了 1 10倍,写入的速度只提高了 1 3倍。而事实上,闪存 的读写速度为微秒级,是磁盘读写速度的100倍左右。由此可见,现有的面向传统磁盘 的数据库系统若直接运行在闪存存储器上,并不能充分发挥闪存相较于磁盘的高速读写 带宽,闪存的优异读写性能大打折扣。其原因在于闪存和磁盘两者的物理特性存在巨大 的差异。例如,在闪存上进行数据更新时,由于闪存以页为读写单位而且覆盖写之前必 须擦除整个块,即使一页中的小部分数据发生更新,为了支持现有数据库的原地更新模 式,也需要将该页所在块的数据全部读入内存,然后修改该页数据,再擦除整个块,最 后将内存中的整块的数据写回到闪存中。这极大地降低了更新性能,从而使得数据库的 更新性能急剧下降,系统的事务吞吐率没有得到应有的提高。系统数据库的恢复方法一般有两部分所构成,一是在事务正常处理时能够保留 足够的信息可用于故障恢复;二是在故障发生之后所要采取的措施,将数据库恢复到一 致性的状态,保持事务的原子性和持久性的状态。这两个方面是紧密相联系的,保持的 信息的类型和程度决定了故障发生之后所要采取的步骤的类型和代价的大小。同样,故 障发生之后的操作的类型和代价大小也决定着事务正常处理时额外开销的大小。现有的 数据库恢复方法有以下几种(1)基于日志的恢复技术在磁盘中被广泛采用。这种方法 产生了很多种不同的记录日志和恢复的办法,有很多种不同的提交协议指导着记录日志 和恢复的过程。不同的协议之下,日志记录的设计,日志/数据缓冲区的管理,检查点 机制,记录日志和恢复的过程都很不一样。(2)影子页是另外一种有名的事务恢复技术, 它不需要显式的回滚操作。影子页技术的主要思想是采用异地更新的更新模式,在事 务的生存周期中维护两张页表当前页表(Current Page Table)和影子页表(Shadow Page Table)。当事务开始时,这两张页表是相同的。影子页表在事务执行过程中从不改变, 事务对数据库的更新后的新地址写入当前页表中。当事务提交时,当前页表被写入非易 失性存储器中,并且用一个原子操作置换当前页表和影子页表,于是当前页表成为了影 子页表,下一个事务执行。如果系统崩溃时当前页表丢失,数据库可以用影子页表进行 恢复。(3)架构在操作系统之上的各种系统软件(如数据库管理系统)和应用软件都需要 借助事务(Transaction)这样的接口来应对各种故障和处理从灾难中恢复的问题。如果能 够在文件系统层面提供事务(Transaction)的接口,将会大大降低其上软件为了各自处理 系统故障所付出的冗余代价。很多先前的工作致力于利用写时复制(copy-on-write)和日志技术在磁盘文件 系统上提供这样的事务接口。但是,由于写时复制(copy-on-write)技术会使得原本在 磁盘上聚簇存放的数据变得十分分散的数据片段(data fragmentation)。在磁盘这样的机 械设备上离散的数据的读写效率十分低下。为了解决这个问题,很多工作采用检查点 (checkpoint)和定期的清除(cleaning)机制来重组离散数据。研究表明这样的重组开销是 十分昂贵的,使得支持事务的文件系统得不偿失。闪存存储器的物理特性很好地适合了 事务文件系统的要求,在闪存文件系统之上支持事务接口成为了很好的选择。事务闪存 (Tansactional Flash)在闪存文件系统之上提供了事务接口,它采用了基于每页的元数据和 圈提交协议来减少额外的提交(commit)记录的性能和空间开销。其主要做法是把每个事 务修改过的页用元数据指针连接起来,形成一个圈。这样,如果事务正常提交,其新版 本就会在一个圈里,如果一个事务的没有正常提交,其修改后的数据页就不能形成一个 圈。圈提交协议用很小的开销在文件系统层面提供了事务接口,但是这个接口不是完善 的,而且垃圾回收、回滚和系统恢复也需要复杂度逻辑支持,其开销也相对较大。
技术实现思路
针对上述问题,本专利技术的目的是提供一种能减少对闪存擦除操作,并能使闪存 充分发挥其高效读写特性的基于闪存的数据库恢复方法。为实现上述目的,本专利技术采取以下技术方案一种基于闪存的数据库恢复方 法,其特征在于它包括一内存、一闪存、一检查点管理模块、一系统启动模块和一系 统关闭模块,所述内存中存储有数据页缓冲区、日志缓冲区和日志区摘要;所述闪存中 存储有日志区、数据区、页表和用来标识所述闪存空间分配状况的位示图;所述检查点 管理模块在所述日志区中设立检查点;所述系统启动模块启动时需要扫描所述日志区, 将获得的日志和数据进行合并;所述系统关闭模块启动时需要在所述日志区中插入一系 列日志,同时进行一系列的操作来完成系统关闭;所述日志缓冲区记录一部分日志,并 把日志刷写到所述闪存上。所述检查点管理模块的检查点的建立步骤如下(1)在日志区中插入一条记录< 检查点编号,活动事务列表,开始>来标志这个检查点的开始;(2)等活动事务列表里面 的所有活跃事务都已经显式提交或者撤销之后,插入另外一条记录<检查点编号,结束> 到日志区中,标志着该检查点的正常结束。所述系统启动模块的启动过程如下(1)检查日志区的尾部,判断是否有标志 正常关机的检查点结束记录 < 检查点编号,结束 > 存在;若无该条记录,则判断在关机 检查点的活跃事务列表中是否存在提交或者撤销的事务,存在则在日志区的尾部添加一 条< 事务编号,放弃 > 记录来显式撤销该事务,然后再插入 < 检查点编号,结束 > 记录来 标志该检查点的结束;相反,则直接插入 < 检查点编号,结束 >记录来标志该检查点的 结束;(2)扫描日志区,在内存中重建日志区摘要。所述系统关闭模块启动时的步骤如下(1)插入标志检查点开始的记录<检查点 编号,活动事务列表,开始 >,开始系统关闭操作;(2)将数据页缓冲区的数据扫出到闪 存的数据区内,并添加相关的日志记录到日志缓冲区中;(3)将页表日志区的日志记录 扫出到闪存的日志区中;(4)插入标志检查点结束的记录 < 检查点编号,结束>。所述数据页缓冲区的管理是在所述数据页缓冲区存满时,根据替换算法扫出数 据页,并在所述日志缓冲区的尾部增加一条页表日志记录<事务编号,逻辑页地址,物 理页地址 > 记录此页逻辑地址和物理地址之间的映射关系。所述日志缓冲区的管理中,所述日志缓冲区和闪存的日志区都要求顺序写入和 顺序扫出。查找所述页表中页面地址的步骤如下(1)查找日志缓冲区,判断是否有成功 提交事务修改了待查找的逻辑页面,若有,则返回最近的成功提交事务所标识的物理地 址;反之,进入下一步;(2)查找日志区摘要,判断是否有待查找的逻辑页面地址,若 有则返回;反之,进入下一步;(3)查找日志区,判断是本文档来自技高网
...

【技术保护点】
一种基于闪存的数据库恢复方法,其特征在于:它包括一内存、一闪存、一检查点管理模块、一系统启动模块和一系统关闭模块,所述内存中存储有数据页缓冲区、日志缓冲区和日志区摘要;所述闪存中存储有日志区、数据区、页表和用来标识所述闪存空间分配状况的位示图;所述检查点管理模块在所述日志区中设立检查点;所述系统启动模块启动时需要扫描所述日志区,将获得的日志和数据进行合并;所述系统关闭模块启动时需要在所述日志区中插入一系列日志,同时进行一系列的操作来完成系统关闭;所述日志缓冲区记录一部分日志,并把日志刷写到所述闪存上。

【技术特征摘要】

【专利技术属性】
技术研发人员:孟小峰向锂范玉雷
申请(专利权)人:中国人民大学
类型:发明
国别省市:11

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

1