[发明专利]嵌套事务模型下实时数据库故障恢复方法无效
申请号: | 201010132651.8 | 申请日: | 2010-03-26 |
公开(公告)号: | CN101794247A | 公开(公告)日: | 2010-08-04 |
发明(设计)人: | 肖迎元;尹波;申艳;刘凤连 | 申请(专利权)人: | 天津理工大学 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F11/34;G06F17/30 |
代理公司: | 天津佳盟知识产权代理有限公司 12002 | 代理人: | 侯力 |
地址: | 300384 天津市*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 嵌套实时事务模型下数据库故障恢复方法。针对嵌套实时事务的特性,提出了一种新的、支持嵌套实时事务模型的故障恢复方法。该故障恢复方法对传统的日志记录类型与结构进行了改进,以更好地适应嵌套实时事务的特性;在日志缓冲区分配策略上,并发的嵌套实时事务被分配独立的活动日志区,从而解决了顺序日志模式中当前日志缓冲页因为严重的访问竞争而影响系统性能的问题;在故障发生后的恢复处理算法中,对重做(Redo)起始点选择与执行顺序进行了优化处理,在确保提交事务持久性的前提下,以尽可能地提高恢复性能。本发明适用于计算机集成制造系统、电网调度等时间关键类应用。 | ||
搜索关键词: | 嵌套 事务 模型 实时 数据库 故障 恢复 方法 | ||
【主权项】:
1.一种嵌套实时事务模型下数据库的故障恢复方法,其特征在于该方法包括:第一、嵌套实时事务中日志记录类型和逻辑结构的建立根据嵌套实时事务NRTT的执行规则特点,将日志记录类型设计成五种,分别是:事务开始日志记录Begin,重写日志记录Redo,事务夭折日志记录Abort,子事务提交日志记录Sub_Commit和事务提交日志记录Commit,其逻辑结构分别是:Begin
Redo
Sub-Commi
Commit
Abort
其中,ID为NRTT标识,用来唯一的标识每一NRTT,属于同一NRTT的事务,包括根事务、内部事务和叶子事务具有相同的ID;TID为事务标识,用来唯一标识NRTT中每一事务;P-TID为TID父事务的事务标识,若TID为根事务,则P-TID置为null;B,R,SC,C,A,分别代表Begin,Redo,Sub_Commit,Commit和Abort五种日志记录类型;LT表示Redo日志记录的长度,TS表示Redo日志记录被创建时的逻辑时标值,逻辑时标的初始值设为0,每当一条Redo日志记录被创建,逻辑时标的值就顺序加1,RID表示被更新数据对象的标识,BN表示RID所在外存块的逻辑块号,AI表示数据对象被更新后的值也称后映像;VTI表示时态数据对象的有效时刻,即VTI=ST+VP,这里,ST表示时态数据对象的采样时刻,VP表示时态数据对象有效期,对于非时态数据,VTI被置为无穷大;第二、日志执行模型的建立,该日志执行模型包括:执行引擎模块:用于执行各事务操作,包括事务开始、更新操作、事务提交、子事务提交、事务夭折;日志管理模块Logger:负责为每一NRTT单独地分配活动日志区、创建相应的日志记录,同时负责创建并维护活动事务表ATL,当一个NRTT的根事务的提交日志记录被写入对应活动日志区后,Logger负责将其活动日志区的内容才被刷新到磁盘日志文件;ATL用来记录当前所有活跃NRTT及其所有子事务的状态信息,活跃NRTT是已开始执行,但根事务尚未完成提交或夭折的NRTT,Logger为每一活跃NRTT在ATL中维护一表项,并为其包含的所有子事务建立相应状态链表,其逻辑结构如下:
其中,ID为NRTT标识;FTS表示NRTT首个Redo日志记录的逻辑时标值,若NRTT为只读事务,FTS置为-1;TID为子事务标识,Status表示子事务当前状态,子事务当前状态包括:活跃Active、提交Sub-Commit和夭折Abort三种;活动日志区:该模型为每一NRTT单独地分配临时日志缓冲页,简称为活动日志区;对每一事务操作,日志管理模块(Logger)负责在当前执行NRTT所属的活动日志分区为其创建相应的日志记录,只有当一个NRTT的根事务的提交日志记录被写入对应活动日志区后,其活动日志区的内容才被刷新到磁盘日志文件;私有数据缓冲区:用于存放NRTT在根事务提交前读写的数据对象;系统数据缓冲区:是磁盘数据库中正在或将要被使用的数据在内存中的缓存,当一个NRTT的根事务提交时,其私有数据缓冲区中的数据被刷新到系统数据缓冲区;磁盘数据库和磁盘日志文件:相对于内存而言,我们将驻扎在磁盘的数据库和日志记录的集合分别称为磁盘数据库和磁盘日志文件;第三、实时数据库故障发生后的分析阶段,即确定Redo起始点实时数据库系统故障发生后的恢复处理过程主要分为二个阶段:分析阶段和重做Redo阶段;在分析阶段,首先通过分析日志确定故障发生前最近一次成功完成的检验点LS_Checkpoint,即End_Checkpoint记录已写入磁盘日志文件的最近一次检验点;根据NRTT与检验点LS_Checkpoint在时间轴上的相对位置关系,确定是否需要重做Redo,对于在LS_Checkpoint的Begin_Checkpoint记录写入磁盘日志文件以前更新已被刷新到系统数据缓冲区的NRTT无需Redo,其余NRTT必须Redo;在扫描需要Redo的NRTT定位到FTS最小的NRTT,即为重做起始点,并将这一最小的FTS记为MinFTS;第四、实时数据库故障发生后的Redo阶段在Redo阶段,依据分析阶段确定的重做起始点,执行重做操作,首先将SDB恢复到最近的一致性状态,对于过期的时态数据不执行Redo操作;不失一般性,假定磁盘日志文件中逻辑时标值等于MinFTS的Redo日志记录记为RedoLogT;Redo阶段的实现算法描述如下:Procedure RedoRecovery(long int MinFTS)Input:MinFTS表示T2和T12类NRTT中最小的FTS.Begin1:Temp=MinFTS;2:While(Temp<CTS)3:自日志文件的RedoLogT日志记录起,正向扫描日志文件;4 : IF ( ∃ RedoLog Ti ( ( RedoLog Ti · TS = = Temp ) ^ ( RedoLog Ti · VTI > T C ) ) ) ]]> 5:Switch(Class)6:Case Sub_transaction:7 : IF ( ( ∃ CommitLog Ti ) ^ ( ∃ LocalCommitLog Ti ) ) ]]> 8:Redo(RedoLogTi);9:Case Root_transaction:10 : IF ( ∃ CommitLog Ti ) ]]> 11:Redo(RedoLogTi);12:Case default:break;13:Temp++;End在上述实现算法中,依据Redo日志记录的逻辑时标值来确定执行Redo操作的顺序;在上述实现算法描述中,CTS表示执行检验点时逻辑时标的值;TC表示系统当前时刻;RedoLogTi表示嵌套实时事务Ti的一条Redo日志记录;RedoLogTi.TS表示RedoLogTi的逻辑时标值;RedoLogTi.VTI表示RedoLogTi记录的数据对象的有效时刻;Class代表Ti的类别,这里用Sub_transaction表示Ti为子事务,而Root_transaction表示Ti为根事务;CommitLogTi表示根事务的Commit日志记录;LocalCommitLogTi表示子事务的LocalCommit日志记录;过程Redo(RedoLogTi)负责将RedoLogTi记录的数据对象用它的后映像覆盖。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津理工大学,未经天津理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010132651.8/,转载请声明来源钻瓜专利网。
- 上一篇:基于样例的区分式三维运动恢复方法
- 下一篇:一种水文地质参数的估计方法