对多节点系统中的检查点队列进行管理技术方案

技术编号:2919052 阅读:169 留言:0更新日期:2012-04-11 18:40
提供了用于管理一个系统中的缓存区的方法,该系统具有多个缓存区,其中多个缓存中可以具有同一数据项的不同拷贝。具体的说,提供了用于对在这种数据项上执行的磁盘写入操作进行协调的方法,以确保数据项的较旧版本不会改写较新版本,并且减少故障之后进行恢复所需要的处理量。并且提供了各种方法,其中使用了一个主管来与多个缓存区进行协调,以便将数据项写入永久性存储器。此外还提供了技术方法来管理那些与缓存区相关联的检查点,其中使用检查点来确定一个位置,在出现故障时,对恢复日志进行的处理始于这个位置。(*该技术在2022年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及磁盘写入操作的执行,尤其涉及对多个系统中的脏数据项的写入进行协调,其中这些系统允许一个数据项的脏数据版本驻留在多个节点的缓存区中。
技术介绍
一种改进数据库系统中的可扩展性的方法是允许多个节点同时读取和修改共享存储器中的数据。每个节点都具有一个缓存区,以便将数据保持在易失主存储器中,并且使用非易失共享磁盘存储器来进行备份。一个全局锁管理器(GLM)或一个分布式锁管理器(DLM)用来维持节点之间的缓存区相关性。为了提供从清除主存储器内容的节点故障中进行的恢复,使用了通用的预写式日志(WAL)协议。出于性能原因,每个节点都具有一个记录各种改变的私有重做日志。而为了减少节点故障之后需要在重做日志中被扫描的改变的数量,通常会采用递增或周期性的检查点,由此确保不必将检查点之前对数据项所做的全部改变重新应用于非易失存储器中的数据项。并发控制在运行于相同或不同节点的事务之间执行的并发控制是借助于全局事务页级锁或行级锁来实施的。事务系统可以使用强制策略或非强制性策略,在强制策略中,经过事务修改的数据项(例如页面/数据块)在提交事务的过程中写入到稳定存储器中,而在非强制策略中,只有重做日志中的事务变化是在提交事务时强制执行的。将强制策略与页级锁一起使用,这意味着数据块仅仅由一个节点(实际上仅仅由一个事务)进行修改,并且在任何时刻都只能在一个系统缓存区中变脏。在所有其他组合中(也就是行级锁与强制策略一起,页级锁与非强制策略一起,以及行级锁与非强制策略一起),可以在多个系统中修改这些数据项并且还需要一种缓存区一致机制。最普通的范例是具有非强制数据项管理策略的行级锁。出于说明目的,以下给出的例子是在使用了具有非强制数据项管理策略的行级锁的系统环境中提供的。然而,这里描述的技术并不局限于这种环境。检查点队列在提交事务时,反映事务所进行的改变的数据必须保存在永久性存储器中。在某些系统中,在提交的时候必须持续保存那些指示事务所进行的改变的重做记录,但是可以延迟那些经过修改的数据项自身的实际写入。那些(1)包含变化和(2)没有持续保存的数据项称为“脏数据项”。通常,节点中的脏数据项越多,如果节点出现故障,则恢复时间也就越长。因此,为了确保恢复时间不会长到难以接受,节点可以保持一个检查点队列。检查点队列包含了标识脏数据项的条目。队列中的条目是根据持续保存的重做日志中的相应重做记录顺序来排列的。如果发生故障,则必须从一条重做记录开始而对重做日志进行处理,其中该记录与位于检查点队列头部的条目相对应。在把一个脏数据项写入永久性存储器时,对应于这个数据项的条目将从检查点队列中删除。在从检查点队列中删除位于检查点队列头部的条目时,在重做日志内部,恢复处理开始的位置必须开始改变而导致检查点“提前”。检查点在重做日志中提前的越多,在出现故障时,从故障中恢复所要完成的工作也就越少。因此,节点通常会尝试将那些由位于检查点队列头部的条目所标识的脏数据项写入永久性存储器。然而,如在下文更详细描述的那样,在多个节点的缓存区中有可能存在同一数据项的多个脏数据版本,这时,协调脏数据项的写入尤为重要。经由共享的永久性存储器的数据项转移在多个系统同时修改数据项时,需要一种机制来协调已修改数据项关于稳定的共享永久性存储器写入。在某些系统中使用了稳定的共享永久性存储器作为介质,以便将经过修改的数据项从一个节点转移到另一个节点,由此简化这个问题。当节点中一个脏数据项需要在一个不同节点加以修改的时候,在将页面锁授予这个希望修改脏数据项的节点之前,数据项首先写入到共享的永久存储器中。当一个不同节点需要读取所修改数据项的当前版本时,相同的写入永久性存储器和读取永久性存储器的序列将会得到使用。经由互连的数据项转移在使用非易失存储器作为介质,由此在节点之间转移数据项的系统中,没有必要协调不同节点之间的脏数据项写入。每个节点可以使用常规机制来写出脏数据项及执行检查点。在某些系统中,当请求节点仅仅需要所修改数据项的一个一致性快照版本时,经过修改的数据项将会发送到请求节点,而不会将该数据项写入永久性存储器。因此,通过这种一致性控制机制,尽管不同节点中的多个事务可以在提交事务之前使用行级锁来修改同一数据项,但是任何数据库的数据项都只在一个节点缓存区中是脏的。因此,在节点出现故障时,只需要从节点的检验点记录开始扫描该节点的重做日志,一直扫描到其重做日志末端,由此即可恢复数据库。此外,当多个节点发生故障时,可以扫描每个节点的重做日志并且按序应用这些重做日志,由此恢复数据库,也就是说,不需要合并来源于多个重做日志的改变。然而,为了提高从一个具有排他锁并且有可能修改了数据项的节点向一个请求相同数据项以供排他使用或是请求现有版本以供读取的节点进行数据项转移的等待时间,较为理想的是把数据项从一个节点的主存储器直接转移到另一个节点的主存储器,而不先将数据项写入永久性存储器。当把脏数据项从一个节点转移到另一个节点时,称为过去镜像(past image)(PI)的数据项的一个拷贝既可保留在发送节点中,也可以不在发送节点中保留。当节点准许转移脏数据项而不需要将其存入永久存储器时,必须在不同节点之间对脏数据项的写入进行协调。如果没有进行协调,则转移了脏数据项的节点可能希望通过把脏数据项写入永久存储器来使其检查点提前。然而,如果其他某些节点已经将数据项的更新版本写入了永久存储器,则将脏数据项写入永久存储器有可能会破坏数据完整性。此外,除非把脏数据项写入磁盘,否则检查点不能提前。如果一个节点并未保持那些由该节点发送到其他节点的数据项的脏数据版本,则这个节点必须以某种方式来与另一个节点协调写入操作。此外,对于一个可扩缩的系统来说,由系统执行的写入磁盘操作的数目不应该是系统节点数目的一个函数。相反,写入磁盘操作的数目应该只反映了对系统内部数据项的实际改变。基于上文,较为理想的是提供那些对系统中的脏数据项写入进行协调的技术方法,在这些系统中,同一数据项的脏数据版本有可能位于一个以上的易失存储器之中。
技术实现思路
由此提供了用于管理一个系统中的缓存区的技术方法,该系统具有多个缓存区,这些缓存区可以包含同一数据项的不同拷贝。具体的说,提供了技术方法,用于协调在这种数据项上执行的磁盘写入操作,由此确保数据项的旧版本不会改写新版本,并且减少故障之后进行恢复所需要的处理量。并且提供了各种方法,其中使用了一个主管(master)来与多个缓存区器进行协调,以便将数据项写入永久性存储器。这种方法包括但不局限于直接写入方法、间接写入方法、基于拥有者的方法以及基于角色的方法。此外还提供了技术方法来管理那些与缓存区相关联的检查点,其中使用检查点来确定发生故障时开始处理恢复日志的位置。附图说明本专利技术是借助实例来描述的,但这并不作为限制,在附图的图形中,相同的参考数字代表相同的部件,其中图1是描述如何根据本专利技术一个实施例而在直接写入方法中协调磁盘写入操作的框图;图2是描述如何根据本专利技术一个实施例而在间接写入方法中协调磁盘写入操作的框图;图3a是描述根据本专利技术的一个实施例,当全局变脏标记为假时,如何在基于拥有者的写入方法中协调磁盘写入操作的框图;图3b是描述根据本专利技术的一个实施例,当全局变脏标记为真时,如何在基于拥有者的写本文档来自技高网
...

【技术保护点】
一种管理涉及到故障之后从何处开始进行恢复的信息的方法,所述方法包括以下步骤:在多节点系统的某个特定节点中,同时保持一个单独故障队列,所述队列指示的是在所述节点出现故障之后,在恢复日志中开始进行恢复的位置,以及一个多重 故障队列,所述队列指示的是当所述多节点系统中的所述节点以及一个或多个其他节点出现故障之后,在恢复日志中开始进行恢复的位置;响应于正被写入永久性存储器的脏数据项,从所述单独故障队列和所述多重故障队列中删除一个涉及所述数据项的条目;以及 响应于发送到所述多节点系统的另一节点而没有首先写入永久性存储器的脏数据项,在不从所述多重故障队列中删除涉及所述数据项的条目的情况下,从所述单独故障队列中删除一个涉及所述数据项的条目。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:萨什坎斯钱德拉塞克拉恩罗杰班福德威廉布里奇大卫布劳尔尼尔麦克诺顿威尔逊尚维纳伊斯瑞哈瑞
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:US[美国]

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

1
相关领域技术
  • 暂无相关专利