本发明专利技术公开了一种写入数据的方法、装置和设备,属于数据库技术领域。所述方法包括:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;其中,所述第一检查点文件与所述第二检查点文件为不同的文件。所述装置包括:记录模块、第一备份模块和第二备份模块。所述设备包括:处理器。本发明专利技术提高了数据库数据的可靠性和持久性。
【技术实现步骤摘要】
本专利技术涉及数据库
,特别涉及一种写入数据的方法、装置和设备。
技术介绍
持久性作为数据库系统的四个基本要素之一,一直是数据库用户关注的热点,持 久性技术也一直是数据库厂商的宣传点与竞争点。数据库通过检查点机制,将修改的数据 页写入非易失存储设备,结合重做日志,在数据库异常终止的情况下,能够进行恢复。检查点(checkpoint)是一个数据库事件,发生该事件的时候,后台进程会将脏数 据写入到磁盘中,同时会写入一些控制信息等用以备份。当数据库异常终止时,通过磁盘 中备份的信息以及重做日志对系统进行恢复。其中,脏数据是指与上一次检查点相比发生 变化的数据,即在两次检查点之间被修改的数据。重做Redo日志主要用来记录一些关键 信息,包括备份了哪些数据、备份在什么位置等等,通过这些信息可以对数据库进行故障恢 复。检查点技术的关键是保证原子性,如果在这个过程中数据库异常终止,会造成数 据库文件被破坏,无法恢复。现有技术采用增量检查点技术,通过把脏数据所在的脏页按照 时间排序,分别写入磁盘中,无需一次性将所有脏页都写入,使得检查点过程不再是一个原 子操作,随时开始随时结束也不会影响数据的一致性。但是,上述现有技术在单个脏页写到一半而被破坏的情况还是可能出现,如正在 写某个脏页的过程中突然掉电从而对数据库文件造成破坏,影响了数据库中数据的可靠性 和持久性。
技术实现思路
为了提高数据库中数据的可靠性和持久性,本专利技术实施例提供了一种写入数据的 方法、装置和设备。所述技术方案如下—方面,一种写入数据的方法,所述方法包括在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数 据的信息;当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次 相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息 将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查 点文件中;其中,所述第一检查点文件与所述第二检查点文件为不同的文件。第一种实施方式下,根据所述上一次检查点记录的脏数据的信息将相应的脏数据 写入第二检查点文件中,包括根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据 中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。第二种实施方式下,所述方法还包括预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次 检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;相应地,在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所 述脏数据的信息,包括在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据 的信息记录在所述当前状态的队列中。第三种实施方式下,当所述本次检查点启动时,如果上一次检查点记录有脏数据 的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点 记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录 的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个 空状态的队列修改为当前状态;如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执 行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据 的信息将相应的脏数据写入第二检查点文件中;并且,根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写 入所述第二检查点文件中;当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激 活状态的队列修改为已备份状态。第四种实施方式下,所述方法还包括预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的 次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次 脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份 的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记 录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当 前值;相应地,根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数 据的信息,判断两次记录的信息是否对应有相同的脏页;如果是,则在根据所述上一次检查 点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入 第二检查点文件中,包括根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据 所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其 写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应 的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。第五种实施方式下,根据本次检查点记录的脏数据的信息将相应的脏数据也写入 所述第二检查点文件中,包括根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一 个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜 像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。另一方面,一种写入数据的装置,所述装置包括记录模块,用于在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则 记录所述脏数据的信息;第一备份模块,用于当所述本次检查点启动时,如果上一次检查点记录有脏数据 的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点 记录的脏数据的信息将相应的脏数据写入第二检查点文件中;第二备份模块,用于根据本次检查点记录的脏数据的信息将相应的脏数据也写入 所述第二检查点文件中;其中,所述第一检查点文件与所述第二检查点文件为不同的文件。第一种实施方式下,所述第一备份模块包括第一写入单元,用于根据所述上一次检查点记录的脏数据的信息,以及所述本次 记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页,如果是,则在根据所述 上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其 余脏页写入第二检查点文件中。第二种实施方式下,所述装置还包括队列设置模块,用于预先生成用于记录脏数据的信息的三个队列,并将用于记录 本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列 设置为空状态;所述记录模块用于在本次检查点启动前,如果与上一次检查点之间有脏数据产 生,则将所述脏数据的信息记录在所述当前状态的队列中。第三种实施方式下,所述队列设置模块还用于当所述本次检查点启动时,将所述 当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;所述第一备份模块用于如果有队列为已备份状态且与该队列中记录的脏数据的 信息相本文档来自技高网...
【技术保护点】
一种写入数据的方法,其特征在于,所述方法包括:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈志标,吴程宏,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。