CN102999564A - 写入数据的方法、装置和设备 - Google Patents

写入数据的方法、装置和设备 Download PDF

Info

Publication number
CN102999564A
CN102999564A CN2012104382966A CN201210438296A CN102999564A CN 102999564 A CN102999564 A CN 102999564A CN 2012104382966 A CN2012104382966 A CN 2012104382966A CN 201210438296 A CN201210438296 A CN 201210438296A CN 102999564 A CN102999564 A CN 102999564A
Authority
CN
China
Prior art keywords
dirty
information
leaf
dirty data
check point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012104382966A
Other languages
English (en)
Other versions
CN102999564B (zh
Inventor
陈志标
吴程宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210438296.6A priority Critical patent/CN102999564B/zh
Publication of CN102999564A publication Critical patent/CN102999564A/zh
Application granted granted Critical
Publication of CN102999564B publication Critical patent/CN102999564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明公开了一种写入数据的方法、装置和设备,属于数据库技术领域。所述方法包括:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;其中,所述第一检查点文件与所述第二检查点文件为不同的文件。所述装置包括:记录模块、第一备份模块和第二备份模块。所述设备包括:处理器。本发明提高了数据库数据的可靠性和持久性。

Description

写入数据的方法、装置和设备
技术领域
本发明涉及数据库技术领域,特别涉及一种写入数据的方法、装置和设备。
背景技术
持久性作为数据库系统的四个基本要素之一,一直是数据库用户关注的热点,持久性技术也一直是数据库厂商的宣传点与竞争点。数据库通过检查点机制,将修改的数据页写入非易失存储设备,结合重做日志,在数据库异常终止的情况下,能够进行恢复。
检查点(checkpoint)是一个数据库事件,发生该事件的时候,后台进程会将脏数据写入到磁盘中,同时会写入一些控制信息等用以备份。当数据库异常终止时,通过磁盘中备份的信息以及重做日志对系统进行恢复。其中,脏数据是指与上一次检查点相比发生变化的数据,即在两次检查点之间被修改的数据。重做Redo日志主要用来记录一些关键信息,包括备份了哪些数据、备份在什么位置等等,通过这些信息可以对数据库进行故障恢复。
检查点技术的关键是保证原子性,如果在这个过程中数据库异常终止,会造成数据库文件被破坏,无法恢复。现有技术采用增量检查点技术,通过把脏数据所在的脏页按照时间排序,分别写入磁盘中,无需一次性将所有脏页都写入,使得检查点过程不再是一个原子操作,随时开始随时结束也不会影响数据的一致性。
但是,上述现有技术在单个脏页写到一半而被破坏的情况还是可能出现,如正在写某个脏页的过程中突然掉电从而对数据库文件造成破坏,影响了数据库中数据的可靠性和持久性。
发明内容
为了提高数据库中数据的可靠性和持久性,本发明实施例提供了一种写入数据的方法、装置和设备。所述技术方案如下:
一方面,一种写入数据的方法,所述方法包括:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;
当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
第一种实施方式下,根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;
如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。
第二种实施方式下,所述方法还包括:
预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
相应地,在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息,包括:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
第三种实施方式下,当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激活状态的队列修改为已备份状态。
第四种实施方式下,所述方法还包括:
预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;
在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当前值;
相应地,根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。
第五种实施方式下,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。
另一方面,一种写入数据的装置,所述装置包括:
记录模块,用于在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;
第一备份模块,用于当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
第二备份模块,用于根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
第一种实施方式下,所述第一备份模块包括:
第一写入单元,用于根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页,如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。
第二种实施方式下,所述装置还包括:
队列设置模块,用于预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
所述记录模块用于:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
第三种实施方式下,所述队列设置模块还用于:当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
所述第一备份模块用于:如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据的信息将相应的脏数据写入第二检查点文件中;
所述第二备份模块用于:根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
所述队列设置模块还用于:当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激活状态的队列修改为已备份状态。
第四种实施方式下,所述装置还包括:
初始化模块,用于预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;
镜像模块,用于在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当前值;
相应地,所述第一写入单元用于:根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。
第五种实施方式下,所述第二备份模块包括:
第二写入单元,用于根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。
再一方面,一种写入数据的设备,所述设备包括:处理器,用于执行如上所述的任一种方法。
本发明实施例提供的技术方案带来的有益效果是:通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的写入数据的方法流程图;
图2是本发明另一实施例提供的写入数据的方法流程图;
图3是本发明实施例提供的使用两个检查点文件交替备份的示意图;
图4是本发明实施例提供的处理三个队列的示意图;
图5是图4所示的队列在第1次检查点的处理过程示意图;
图6是图4所示的队列在第2次检查点的处理过程示意图;
图7是图4所示的队列在第3次检查点的处理过程示意图;
图8是本发明又一实施例提供的写入数据的方法流程图;
图9是本发明再一实施例提供的写入数据的方法流程图;
图10是本发明实施例提供的镜像页的处理示意图;
图11是本发明一实施例提供的写入数据的装置结构图;
图12是本发明另一实施例提供的写入数据的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例涉及检查点(checkpoint)技术。检查点是一个数据库事件,发生该事件的时候,后台进程会将脏数据写入到磁盘中,同时会写入一些控制信息等用以数据持久化。其中,脏数据是指数据库中与上一次检查点相比发生变化的数据,即在两次检查点之间被修改的数据。通常,检查点为定期检查机制,可以预先设置一个周期,按照该周期定时启动检查点检查数据库中是否有脏数据产生,如果有则对脏数据进行持久化,将其保存到磁盘中以备系统恢复时使用。具体地,脏数据可以以检查点文件的形式保存在磁盘中。
当数据库异常终止时,通过磁盘中备份的脏数据以及重做日志可以对数据库系统进行恢复。所述数据库异常终止可以包括多种情况,如突然掉电等,但不限于此。重做Redo日志主要用来记录一些关键信息,包括备份了哪些数据、备份在什么位置等等,通过这些信息结合磁盘中备份的脏数据可以对数据库进行故障恢复。
参见图1,本发明一实施例提供了一种写入数据的方法,包括:
101:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录脏数据的信息。
102:当本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中。
103:根据本次检查点记录的脏数据的信息将相应的脏数据也写入第二检查点文件中。
其中,第一检查点文件与第二检查点文件为不同的文件。
具体地,第一检查点文件可以位于第一磁盘上,第二检查点文件可以位于第二磁盘上,本发明对此不做具体限定。通过这种备份在不同的文件中的方式,实现了对数据库中脏数据的冗余备份,增强了数据的可靠性和持久性。
本实施例提供的上述方法,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。
参见图2,本发明另一实施例还提供了一种写入数据的方法,包括:
201:预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态。
本实施例中,所述脏数据的信息是指用于标识脏数据的信息,包括但不限于:脏数据的地址、脏数据的ID等等。
所述三个队列位于系统的内存中,主要用来记录脏数据的信息,当进行脏数据的持久化时,可以先读取该队列中的脏数据的信息,根据读取到的该信息可以找到相应的脏数据,从而进行持久化操作。
本实施例中,每个队列都具有一个状态,该状态分为四种:空状态empty、当前状态current、激活状态active、已备份状态stale。其中,空状态是一个队列的初始状态,指还未对该队列进行任何操作。当前状态是指当前正在向该队列中写入脏数据的信息,是正在处理该队列的状态。激活状态是指该队列中已写好脏数据的信息,正在进行根据该脏数据的信息将相应的脏数据写入检查点文件的过程,是正在备份脏数据的状态。已备份状态是指已根据该队列中脏数据的信息对相应的脏数据进行过一次备份操作,可以进行再次备份的状态。
对于每个队列而言,其状态的迁移顺序都是固定的,从空状态至当前状态,再至激活状态,再至已备份状态,再至空状态,如此循环,不断迁移。该迁移过程可以表示如下:
Empty->Current->Active->Stale->Empty;
初始时为空状态,写入队列为当前状态,首次写入检查点文件为激活状态,再次写入检查点文件为已备份状态。每次检查点启动和结束时,都需要进行状态的迁移。本实施例中备份脏数据时,只需根据队列状态,对Stale和Active状态的队列进行处理,将相应的脏数据写入检查点文件中。
202:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
本实施例中,本次检查点是指任一次检查点,具体不限定是第几次检查点,如可以第1次检查点,或者是第3次检查点,或者是第10次检查点等等。所述上一次检查点是指按照预设的周期在本次检查点启动之前最后一次启动过的检查点。例如,本次为第6次检查点,则上一次为第5次检查点。
本步骤描述的本次检查点启动前是指本次检查点还未启动的时刻,从时间上来说是指本次检查点与上一次检查点之间的时间段内。所述本次检查点、上一次检查点的描述仅仅为了区分不同的检查点,是一种名称,并不代表发生的时刻,对于检查点是否发生则会用检查点启动以及检查点结束等来描述检查点发生和持续的时间,特此声明,后文不再赘述。
203:当本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态。
上述预先生成的三个队列中,一个队列由当前状态修改为激活状态,以便进行脏数据的备份;另外两个为空状态,在本步骤中,可以任选其中一个空状态的队列将其修改为当前状态,以便进行脏数据的信息写入队列,剩余的另一个队列仍然保持空状态。
204:如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据该已备份状态的队列中记录的脏数据的信息将相应的脏数据写入第二检查点文件中。
其中,该已备份状态的队列在上一次检查点时,已经执行过一次脏数据的备份过程,且备份到第一检查点文件中。在本步骤中,根据该队列中的脏数据的信息对相应的脏数据进行再次备份,将其写入第二检查点文件中,从而实现了脏数据的冗余备份,增强了数据的可靠性和持久性。即使第一检查点文件中的数据被破坏,还可以使用第二检查点文件中的数据对数据库系统进行恢复。
本实施例中,用于备份脏数据的文件有两个,分别是第一检查点文件和第二检查点文件,且所述第一检查点文件与第二检查点文件为不同的文件。在备份脏数据的过程中,每次使用其中一个文件,且两个文件交替使用,每次使用与上一次不同的文件。
例如,参见图3,为使用两个检查点文件交替备份的示意图。其中,第n次备份脏数据到第一检查点文件中,第n+1次备份脏数据到第二检查点文件中,第n+2次备份脏数据到第一检查点文件中,以此类推,交替使用两个检查点文件对脏数据进行备份。
所述第一检查点文件和第二检查点文件可以位于不同的磁盘上,如第一检查点文件位于第一磁盘上,第二检查点位于第二磁盘上,本发明对此不做具体限定。
由于本次检查点可以为任意一次检查点,因此,包括第1次检查点,以后后续的第n次检查点,n≥2。对于本步骤而言,如果本次是第1次检查点,则不会有队列为已备份状态,因此,可以不用执行本步骤;如果是后续的第n次检查点,则必然有一个队列为已备份状态,因此,需要执行本步骤。
205:根据所述激活状态的队列中记录的脏数据的信息将相应的脏数据写入第二检查点文件中。
其中,激活状态的队列中的脏数据的信息为本次检查点记录的脏数据的信息,因此,对其相应的脏数据是首次进行备份,将该脏数据写入第二检查点文件中,与上次备份的第一检查点文件不同,达到冗余备份的效果。
具体地,可以从该激活状态的队列中读取保存的脏数据的信息,该脏数据是指本次检查点与上一次检查点之间产生的脏数据,根据读取的该脏数据的信息可以在内存中找到相应的脏数据,如根据地址读取相应的脏数据,得到该脏数据后将其写入第二检查点文件中。
206:当本次检查点结束时,将该已备份状态的队列修改为空状态,并将该激活状态的队列修改为已备份状态。
其中,该已备份状态的队列在上一次检查点进行了首次脏数据备份,在本次检查点进行了再次脏数据备份,因此,后续的检查点无需再进行备份了,将其修改为空状态,其中保存的信息会被清空,从而可以重新保存其它的信息。该激活状态的队列在本次检查点中为首次进行脏数据备份,因此,将其修改为已备份状态,以便在下一次检查点时进行再次脏数据备份,实现冗余备份。
下面以一个实例并结合图4、5和6来具体说明上述处理三个队列的过程。
参见图4,有三个队列,分别是队列1、队列2和队列3。初始时队列1为当前状态,队列2和3为空状态。内存中保存有多个数据页,当前有3个页上的数据被修改,产生3个脏页:页1、页8和页9,将这三个页的地址写入处于当前状态的队列1中。
参见图5(a),当第1次检查点开始时,将队列1由当前状态修改为激活状态,将队列2由空状态修改为当前状态,即当前使用的队列由队列1转换为队列2。并且,根据激活状态的队列1中保存的页1、页8和页9的地址将这3个脏页写入第一检查点文件中进行备份,队列3的状态保持不变。参见图5(b),当第1次检查点结束时,已完成该3个脏页的备份,将队列1由激活状态修改为已备份状态。并且,由于又产生了2个新的脏页,页6和页10,因此,将页6和页10的地址写入当前状态的队列2中,队列3仍为空状态。
参见图6(a),当第2次检查点开始时,将队列2由当前状态修改为激活状态,队列3由空状态修改为当前状态,即当前使用的队列由队列2切换为队列3。并且,同时根据已备份状态的队列1和激活状态的队列2,将相应的页1、页8和页9,以及页6和页10写入到第二检查点文件中进行备份。参见图6(b),当第2次检查点结束时,已经成功把队列1和队列2对应的脏数据写入检查点文件,由于队列2是第一次备份,则状态由激活状态修改为已备份状态;队列1已经是第二次备份,则状态由已备份状态修改为空状态。并且,由于又产生了一个新的脏页页3,则将其地址写入当前状态的队列3中。
参见图7(a),当第3次检查点开始时,将队列3由当前状态修改为激活状态,队列1由空状态修改为当前状态,即当前使用的队列由队列3切换为队列1。并且,同时根据已备份状态的队列2和激活状态的队列3,将相应的页6、页10和页3写入第一检查点文件中进行备份。参见图7(b),当第3次检查点结束时,已经成功把队列2和队列3对应的脏数据写入检查点文件中,由于队列3是第一次备份,则状态由激活状态修改为已备份状态;队列2已经是第二次备份,则状态由已备份状态修改为空状态。
本实施例提供的上述方法,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。
参见图8,本发明再一实施例还提供了一种写入数据的方法,包括:
801:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录脏数据的信息。
802:当本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息,以及本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页。
803:如果判断出两次记录的信息对应有相同的脏页,则在根据上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除相同的脏页以外的其余脏页写入第二检查点文件中。
其中,第一检查点文件与第二检查点文件为不同的文件。
804:根据本次检查点记录的脏数据的信息将相应的脏数据也写入第二检查点文件中。
例如,上一次检查点记录有3个脏页的信息,脏页1、脏页2和脏页3,本次检查点记录有2个脏页的信息,脏页5和脏页3,则由于脏页3被记录了两次,无需进行两次备份,因此,可以在备份上一次检查点的脏数据时,忽略该脏页3,仅备份脏页1和脏页2,在备份本次检查点的脏数据时,再备份脏页5和脏页3,从而既保证了脏页3的备份,也减少了不必要的I/O操作,简化了处理过程,提高了处理效率。
本实施例提供的上述方法,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。当本次和上一次都记录有相同的脏页时,可以只处理一次该脏页的备份,从而减少了一次I/O处理过程,提高了处理效率。
参见图9,本发明又一实施例还提供了一种写入数据的方法,包括:
901:预先为检查点设置全局序号和局部序号,其中,全局序号用于记录检查点的次数,且每次启动检查点时递增,局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时局部序号被赋值为全局序号的当前值并被记录在该脏页上。
其中,检查点的全局序号每次递增的量可以根据需要设置为固定的值。优选地,其初始值可以为0,每次递增为1,本发明对此不做具体限定。局部序号的值记录的是某一脏页被修改时所对应的检查点次数,如某一时刻在第2次检查点时,一脏页被修改,则该脏页上记录局部序号为2,另一时刻该脏页2在第5次检查点时被修改,则将该脏页上记录的局部序号更新为5。
当脏页上记录的局部序号与当前的全局序号相等时,表明该脏页在当前的检查点被修改,如果该脏页上的局部序号比全局序号小1,则表明是在上一次检查点时被修改的,如果该脏页上的局部序号比全局序号小2,则表明是在上上次检查点时被修改的,从而从局部序号可以反映出脏页是在哪次检查点被修改的。
902:在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为该数据所在页生成镜像页,然后修改该数据得到脏页,并在该脏页上记录检查点的局部序号和该镜像页的信息,其中记录的局部序号的值为全局序号的当前值。
本实施例中涉及的上一次检查点、本次检查点,可以是相邻的任意两次检查点,具体次数本发明对此不限定。
其中,某一页的镜像页是指与该页完全相同的页,由于该页又要被修改,因此通过镜像页来记录修改之前该页的内容。生成镜像页后再对该页上的数据进行修改,就生成了脏数据,该脏数据所在的该页就成为了脏页。此时,在该脏页上记录局部序号,并设置为检查点全局序号的当前值,从而记录该脏页被修改时所在的检查点次数。
903:在上一次检查点结束后且在本次检查点启动前,如果有脏数据产生,则作为本次检查点的脏数据记录该脏数据的信息。其中,所述脏数据产生时也会在相应的页上记录局部序号,并将其值设置为检查点的全局序号的当前值,此处不赘述。
904:当本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息获取相应的脏数据,判断该脏数据所在的脏页中是否存在记录有镜像页信息的脏页。
905:对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果该镜像页内记录的局部序号的值比全局序号的当前值小1,则忽略该记录有镜像页信息的脏页不写入第二检查点文件中。
其中,第一检查点文件与第二检查点文件为不同的文件。
由于根据局部序号和全局序号的关系,可以确定该脏页也被本次检查点记录了,因此,可以忽略上一次检查点记录的该脏页,从而可以减少一次I/O操作,提高效率。
906:根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据该镜像页的信息获取相应的镜像页,并将该镜像页和脏数据中除该脏页以外的其余脏页写入第二检查点文件中。
由于该脏页在本次检查点也被修改了,而本次检查点只需备份本次检查点启动以前所记录的脏数据,因此,需要获取该脏页的镜像页,从而对该镜像页进行备份。而本次检查点对该脏页修改的内容则留在下一次检查点时再进行相应的备份。
本实施例中,当对镜像页进行备份后,可以删除该镜像页,从而可以释放和回收存储资源,以备后续再利用。
参见图10,为本实施例提供的镜像页的处理示意图。其中,当前检查点的全局序号为3,有一页201上有三行数据:行1、行2和行3。使用三个队列记录脏数据的地址,分别是队列1、队列2和队列3,并按照上述实施例介绍的方法设置各种状态。在上一次检查点时,为页201生成了镜像页:页602,其中,该页602上记录了当时该脏页被修改时所在的检查点次数,即图上页602内记录的局部序号为2。并且,在页201上记录了镜像页的地址602。当前检查点启动时,队列2由当前状态转换为激活状态,队列3由空状态转换为当前状态,此时,对已备份状态的队列1和激活状态的队列2进行处理。首先,对已备份状态的队列1进行处理,根据保存的地址获取相应的脏页,发现其中的页201具有镜像页602,则读取镜像页602,并比较该镜像页上记录的局部序号2与当前的检查点全局序号3,由于局部序号2比全局序号3小1,可以确定该脏页201在本次检查点也记录了,其地址信息也被保存在队列2中,因此,忽略队列1中的脏页201,将其它脏页191、193和211写入检查点文件中。然后,对激活状态的队列2进行处理,根据地址获取脏页201,发现其有镜像页602,则将该镜像页进行备份,写入到检查点文件中。从而保证了脏页201只执行一次写入检查点文件的过程,节省了一次IO操作,减少了I/O次数,提高了处理效率。
本实施例提供的上述方法,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。另外,根据局部序号和全局序号的关系,对于相同的脏页只根据本次检查点的记录进行备份,可以减少一次I/O操作,提高了效率。
参见图11,本发明再一实施例提供了一种写入数据的装置,包括:
记录模块1101,用于在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录该脏数据的信息;
第一备份模块1102,用于当本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
第二备份模块1103,用于根据本次检查点记录的脏数据的信息将相应的脏数据也写入第二检查点文件中;
其中,第一检查点文件与第二检查点文件为不同的文件。
参见图12,本实施例中,第一备份模块1102可以包括:
第一写入单元,用于根据上一次检查点记录的脏数据的信息,以及本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页,如果是,则在根据上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除相同的脏页以外的其余脏页写入第二检查点文件中。
本实施例中,上述装置还可以包括:
队列设置模块1104,用于预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
记录模块1101用于:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将脏数据的信息记录在当前状态的队列中。
进一步地,队列设置模块1104还用于:当本次检查点启动时,将当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
第一备份模块1102用于:如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据已备份状态的队列中记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
第二备份模块1103用于:根据激活状态的队列中记录的脏数据的信息将相应的脏数据也写入第二检查点文件中;
队列设置模块1104还用于:当本次检查点结束时,将已备份状态的队列修改为空状态,并将激活状态的队列修改为已备份状态。
本实施例中,上述装置还可以包括:
初始化模块1105,用于预先为检查点设置全局序号和局部序号,其中,全局序号用于记录检查点的次数,且每次启动检查点时递增,局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时局部序号被赋值为全局序号的当前值并被记录在该脏页上;
镜像模块1106,用于在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为数据所在页生成镜像页,然后修改数据得到脏页,并在脏页上记录局部序号和镜像页的信息,其中记录的局部序号的值为全局序号的当前值;
相应地,所述第一写入单元用于:根据上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据该镜像页信息获取相应的镜像页,如果该镜像页内记录的局部序号的值比当前全局序号的当前值小1,则忽略该记录有镜像页信息的脏页不写入第二检查点文件中。
进一步地,第二备份模块1103包括:
第二写入单元,用于根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据镜像页的信息获取相应的镜像页,并将镜像页和脏数据中除脏页以外的其余脏页写入第二检查点文件中。
本实施例提供的上述装置,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。另外,当本次和上一次都记录有相同的脏页时,可以只处理一次该脏页的备份,从而减少了一次I/O处理过程,提高了处理效率。
本发明实施例还提供了一种写入数据的设备,包括:处理器;所述处理器可以执行如下方法:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;
当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
其中,根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;
如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。
进一步地,所述处理器还可以执行如下步骤:
预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
相应地,在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息,包括:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
其中,当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激活状态的队列修改为已备份状态。
进一步地,所述处理器还可以执行如下步骤:
预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;
在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当前值;
相应地,根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。
其中,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。
本实施例提供的上述设备,通过记录本次与上一次检查点之间的脏数据的信息,并在本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件,并且,根据本次记录的脏数据的信息将相应的脏数据也写入第二检查点文件,实现了检查点过程中脏数据的冗余备份,避免了在检查点执行过程中突然掉电等异常情况对数据库文件的破坏,极大地提高了数据库数据的可靠性和持久性。另外,当本次和上一次都记录有相同的脏页时,可以只处理一次该脏页的备份,从而减少了一次I/O处理过程,提高了处理效率。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种写入数据的方法,其特征在于,所述方法包括:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;
当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
2.根据权利要求1所述的方法,其特征在于,根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;
如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
相应地,在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息,包括:
在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
4.根据权利要求3所述的方法,其特征在于,当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;并且,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据的信息将相应的脏数据写入第二检查点文件中;
并且,根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激活状态的队列修改为已备份状态。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;
在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当前值;
相应地,根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页;如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中,包括:
根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。
6.根据权利要求5所述的方法,其特征在于,根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中,包括:
根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。
7.一种写入数据的装置,其特征在于,所述装置包括:
记录模块,用于在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则记录所述脏数据的信息;
第一备份模块,用于当所述本次检查点启动时,如果上一次检查点记录有脏数据的信息且执行过一次相应的脏数据写入第一检查点文件的操作,则根据所述上一次检查点记录的脏数据的信息将相应的脏数据写入第二检查点文件中;
第二备份模块,用于根据本次检查点记录的脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
其中,所述第一检查点文件与所述第二检查点文件为不同的文件。
8.根据权利要求7所述的装置,其特征在于,所述第一备份模块包括:
第一写入单元,用于根据所述上一次检查点记录的脏数据的信息,以及所述本次记录的脏数据的信息,判断两次记录的信息是否对应有相同的脏页,如果是,则在根据所述上一次检查点记录的脏数据的信息获取的相应的脏数据中,将除所述相同的脏页以外的其余脏页写入第二检查点文件中。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
队列设置模块,用于预先生成用于记录脏数据的信息的三个队列,并将用于记录本次检查点与上一次检查点之间产生的脏数据的信息的队列设置为当前状态,将其余队列设置为空状态;
所述记录模块用于:在本次检查点启动前,如果与上一次检查点之间有脏数据产生,则将所述脏数据的信息记录在所述当前状态的队列中。
10.根据权利要求9所述的装置,其特征在于,
所述队列设置模块还用于:当所述本次检查点启动时,将所述当前状态的队列修改为激活状态,以及将一个空状态的队列修改为当前状态;
所述第一备份模块用于:如果有队列为已备份状态且与该队列中记录的脏数据的信息相应的脏数据已执行过一次写入第一检查点文件的操作,则根据所述已备份状态的队列中记录的所述脏数据的信息将相应的脏数据写入第二检查点文件中;
所述第二备份模块用于:根据所述激活状态的队列中记录的所述脏数据的信息将相应的脏数据也写入所述第二检查点文件中;
所述队列设置模块还用于:当所述本次检查点结束时,将所述已备份状态的队列修改为空状态,并将所述激活状态的队列修改为已备份状态。
11.根据权利要求8所述的装置,其特征在于,所述装置还包括:
初始化模块,用于预先为检查点设置全局序号和局部序号,其中,所述全局序号用于记录检查点的次数,且每次启动检查点时递增,所述局部序号用于记录脏页在哪次检查点被修改,且每次脏页被修改时所述局部序号被赋值为所述全局序号的当前值并被记录在该脏页上;
镜像模块,用于在上一次检查点过程中,当将要修改数据时发现该数据所在页为当前检查点备份的页,则先为所述数据所在页生成镜像页,然后修改所述数据得到脏页,并在所述脏页上记录所述局部序号和所述镜像页的信息,其中记录的所述局部序号的值为所述全局序号的当前值;
相应地,所述第一写入单元用于:根据所述上一次检查点记录的脏数据的信息获取相应的脏数据,判断所述脏数据所在的脏页中是否存在记录有镜像页信息的脏页,对于未记录有镜像页信息的脏页,将其写入第二检查点文件中;对于记录有镜像页信息的脏页,则根据所述镜像页信息获取相应的镜像页,如果所述镜像页内记录的所述局部序号的值比所述全局序号的当前值小1,则忽略所述记录有镜像页信息的脏页不写入第二检查点文件中。
12.根据权利要求11所述的装置,其特征在于,所述第二备份模块包括:
第二写入单元,用于根据本次检查点记录的脏数据的信息获取相应的脏数据,如果该脏数据所在的一个脏页上记录有镜像页的信息,则根据所述镜像页的信息获取相应的镜像页,并将所述镜像页和所述脏数据中除所述脏页以外的其余脏页写入所述第二检查点文件中。
13.一种写入数据的设备,其特征在于,所述设备包括:处理器,用于执行如权利要求1至6中任一项所述的方法。
CN201210438296.6A 2012-11-06 2012-11-06 写入数据的方法、装置和设备 Active CN102999564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210438296.6A CN102999564B (zh) 2012-11-06 2012-11-06 写入数据的方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210438296.6A CN102999564B (zh) 2012-11-06 2012-11-06 写入数据的方法、装置和设备

Publications (2)

Publication Number Publication Date
CN102999564A true CN102999564A (zh) 2013-03-27
CN102999564B CN102999564B (zh) 2015-12-02

Family

ID=47928132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210438296.6A Active CN102999564B (zh) 2012-11-06 2012-11-06 写入数据的方法、装置和设备

Country Status (1)

Country Link
CN (1) CN102999564B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218430A (zh) * 2013-04-11 2013-07-24 华为技术有限公司 控制数据写入的方法、系统及设备
CN104408126A (zh) * 2014-11-26 2015-03-11 杭州华为数字技术有限公司 一种数据库的持久化写入方法、装置和系统
CN106776684A (zh) * 2016-10-28 2017-05-31 努比亚技术有限公司 一种音频文件管理方法、装置及终端
CN107562642A (zh) * 2017-07-21 2018-01-09 华为技术有限公司 检查点淘汰方法和装置
CN111046024A (zh) * 2019-12-16 2020-04-21 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN112099996A (zh) * 2020-09-21 2020-12-18 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112506941A (zh) * 2021-02-03 2021-03-16 北京金山云网络技术有限公司 核查点的处理方法和装置、电子设备和存储介质
CN115061858A (zh) * 2022-08-19 2022-09-16 湖南视拓信息技术股份有限公司 数据持久化方法、装置、计算机设备及存储介质
CN117687845A (zh) * 2024-02-04 2024-03-12 成都佰维存储科技有限公司 上电恢复方法、装置、可读存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541691A (zh) * 2011-12-27 2012-07-04 北京人大金仓信息技术股份有限公司 面向内存数据库oltp应用的日志检查点恢复方法
US20120250857A1 (en) * 2011-03-29 2012-10-04 Kaseya International Limited Method and apparatus of securely processing data for file backup, de-duplication, and restoration
US20120265743A1 (en) * 2011-04-13 2012-10-18 International Business Machines Corporation Persisting of a low latency in-memory database

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120250857A1 (en) * 2011-03-29 2012-10-04 Kaseya International Limited Method and apparatus of securely processing data for file backup, de-duplication, and restoration
US20120265743A1 (en) * 2011-04-13 2012-10-18 International Business Machines Corporation Persisting of a low latency in-memory database
CN102541691A (zh) * 2011-12-27 2012-07-04 北京人大金仓信息技术股份有限公司 面向内存数据库oltp应用的日志检查点恢复方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103218430B (zh) * 2013-04-11 2016-03-02 华为技术有限公司 控制数据写入的方法、系统及设备
CN103218430A (zh) * 2013-04-11 2013-07-24 华为技术有限公司 控制数据写入的方法、系统及设备
CN104408126B (zh) * 2014-11-26 2018-06-15 杭州华为数字技术有限公司 一种数据库的持久化写入方法、装置和系统
CN104408126A (zh) * 2014-11-26 2015-03-11 杭州华为数字技术有限公司 一种数据库的持久化写入方法、装置和系统
CN106776684B (zh) * 2016-10-28 2021-01-22 努比亚技术有限公司 一种音频文件管理方法、装置及终端
CN106776684A (zh) * 2016-10-28 2017-05-31 努比亚技术有限公司 一种音频文件管理方法、装置及终端
CN107562642A (zh) * 2017-07-21 2018-01-09 华为技术有限公司 检查点淘汰方法和装置
CN107562642B (zh) * 2017-07-21 2020-03-20 华为技术有限公司 检查点淘汰方法和装置
CN111046024A (zh) * 2019-12-16 2020-04-21 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN111046024B (zh) * 2019-12-16 2023-05-23 上海达梦数据库有限公司 一种共享存储数据库的数据处理方法、装置、设备及介质
CN112099996A (zh) * 2020-09-21 2020-12-18 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112099996B (zh) * 2020-09-21 2022-04-05 天津神舟通用数据技术有限公司 基于页面更新序号的数据库集群多节点重做日志恢复方法
CN112506941A (zh) * 2021-02-03 2021-03-16 北京金山云网络技术有限公司 核查点的处理方法和装置、电子设备和存储介质
CN115061858A (zh) * 2022-08-19 2022-09-16 湖南视拓信息技术股份有限公司 数据持久化方法、装置、计算机设备及存储介质
CN117687845A (zh) * 2024-02-04 2024-03-12 成都佰维存储科技有限公司 上电恢复方法、装置、可读存储介质及电子设备

Also Published As

Publication number Publication date
CN102999564B (zh) 2015-12-02

Similar Documents

Publication Publication Date Title
CN102999564A (zh) 写入数据的方法、装置和设备
JP4248510B2 (ja) 計算機システム、ディスク装置およびデータ更新制御方法
CN101198939B (zh) 管理闪存中的存储器
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
CN102298555B (zh) 基于nand技术的模块化闪存管理系统
CN105550062B (zh) 基于持续数据保护与时间点浏览恢复的数据回流方法
EP0745934A3 (en) File system for a data storage device having a power fail recovery mechanism for write/replace operations
US20070088990A1 (en) System and method for reduction of rebuild time in raid systems through implementation of striped hot spare drives
TW200929224A (en) Data writing method for flash memory and controller thereof
CN102541691B (zh) 面向内存数据库oltp应用的日志检查点恢复方法
CN101901189B (zh) 更新用户数据的方法以及恢复用户数据的方法
JP2007012058A (ja) フラッシュ様媒体におけるトランザクションレコードを格納するファイルシステム
CN103064760B (zh) 备份方法和备份装置
CN104516959A (zh) 一种管理数据库日志的方法及装置
CN102033793A (zh) 快照方法和固态硬盘
CN103049539A (zh) 一种文件系统中文件数据的存储方法及其装置
CN102063380A (zh) 一种向非易失性存储器写入数据的方法及装置
CN100590737C (zh) 闪存介质中的数据管理方法
CN108614876A (zh) 一种基于Redis数据库的系统和数据处理方法
CN101561950B (zh) 智能卡的数据处理方法及装置
CN105653393B (zh) 一种基于usn日志方式进行海量文件备份的方法
CN103531234A (zh) 一种NandFlash存储器写操作过程掉电防护方法
CN113360312A (zh) 一种硬盘故障处理方法、装置、设备及存储介质
CN101788934A (zh) 逻辑卷管理器的数据操作方法
KR20090094594A (ko) 저널링 파일 시스템에 따라 데이터를 기록한 정보저장매체,저널링 파일 시스템을 이용해서 데이터를 기록/복구하는방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220221

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right