CN115858252B - 一种数据恢复方法、装置及存储介质 - Google Patents
一种数据恢复方法、装置及存储介质 Download PDFInfo
- Publication number
- CN115858252B CN115858252B CN202310142026.9A CN202310142026A CN115858252B CN 115858252 B CN115858252 B CN 115858252B CN 202310142026 A CN202310142026 A CN 202310142026A CN 115858252 B CN115858252 B CN 115858252B
- Authority
- CN
- China
- Prior art keywords
- data line
- record
- target
- timestamp information
- data
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库的领域,提供了一种数据恢复方法、装置及存储介质,用于多个数据行结构的数据库,并且每个数据行结构均包括第一时间戳信息,数据恢复方法包括:主线程获取与数据库相关联的包括第二时间戳信息的操作日志,并依序读取和分发待回放的记录至多个恢复线程;多个恢复线程并行地依次将待回放的记录作为目标记录,并根据目标记录的第二时间戳信息以及对应的目标数据行结构的第一时间戳信息执行目标记录所指示的针对目标数据行结构的操作。本申请提供的方案能够在多线程并行进行数据恢复的情况下,解决数据并行恢复导致的写冲突问题,不但能够满足低延迟,高并发、高一致性的要求,还能够提升数据库的数据恢复操作稳定性。
Description
技术领域
本申请涉及数据库的领域,尤其是涉及一种数据恢复方法、装置及存储介质。
背景技术
目前,是将数据放在内存中直接操作的数据库。相对于磁盘,内存数据库的数据读写速度要高出几个数量级。而若要在内存数据库宕机重启后,恢复正常继续处理事务的工作状态,则需要将宕机前内存中的数据完整恢复。
为解决上述数据恢复的问题,内存数据库重启WAL(Write-Ahead-Log)日志恢复需要重新构建索引和数据表,该过程通常会采用单个线程回放WAL中的修改记录,这一过程将需要构建大量索引,使得数据恢复占用很长的时间。尤其是针对某些类似金融场景中的应用,例如交易系统,数据库的主要工作负载是对关系表的高频度、高并发的更新和查询操作,因此,这些应用场景要求低延迟,高并发,同时提供很高的数据一致性,若采用单线程回放WAL的方式恢复数据,将很大程度上影响系统可用性。
针对上述问题,目前的解决方案是采用并行恢复的方式替代单线程的数据恢复方式。并行恢复的思路在于采用多个回放线程同时回放WAL中的日志,并行构建数据表的索引,减少系统整体恢复时间,提高系统可用性。
在WAL中,数据是按照事务的提交顺序写入的,而若需要完整无误地恢复数据,在数据恢复时也必须要按照每个事务的提交顺序来回放日志记录。在使用上述的单线程恢复方式时,这样的需求是比较容易实现的,只需要顺序读取WAL中的日志记录,并按事务提交的时间顺序进行数据回放即可。而若采用多个回放线程的方式进行数据恢复,则可能因为操作系统线程调度,导致上述的顺序条件无法得到满足。例如:事务T1和事务T2的提交时间顺序为T1<T2,而数据回放的过程中,由于操作系统调度,导致出现了事务T2的日志在一个线程中先于事务T1的日志回放的情况,进而导致恢复后的数据出现错误。
针对上述情况,本申请提出了一种数据恢复方法、装置及存储介质,用以在并行恢复数据的过程中正确处理上述的乱序回放问题。
发明内容
为了在并行恢复数据的过程中正确处理上述的乱序回放问题,本申请提供一种数据恢复方法、装置及存储介质。
第一方面,本申请提供的一种数据恢复方法,采用如下的技术方案:
一种数据恢复方法,用于数据库,所述数据库包括多个数据行结构,并且每个所述数据行结构均包括第一时间戳信息,所述第一时间戳信息指示其所属的数据行结构所接受的最后一次操作的实施时间,所述方法包括:
主线程获取与所述数据库相关联的操作日志,并依序读取所述操作日志中待回放的记录,以及将所述待回放的记录分发至多个恢复线程,其中,所述操作日志中的记录包括第二时间戳信息,所述第二时间戳信息指示其所属的记录所表征的操作发起的时间;
所述多个恢复线程并行地执行下列操作:
依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构;
根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作。
通过采用上述技术方案,对于多线程的并行操作,其难点在于,在受到系统调度影响的情况下,上述的多个恢复线程无法按照先前的顺序正确地实现回放的目的,而常会出现乱序的冲突问题。作为示例地,若多个恢复线程并行操作,那么每个恢复线程所执行的操作将会出现先后顺序不同的情况,由于系统的调度限制,很可能会出现前序的记录尚未执行,而后续的事务已经执行完毕的情况,这将会导致不同程度的写冲突问题。
第一时间戳信息和第二时间戳信息均指示对应数据的操作时间,以实际时间为依据,二者的先后顺序明确且清晰。
本方案采用了时间戳来解决上述的乱序回放问题,对于目标记录采用上述的第一时间戳信息记录其顺序信息,同理,对于目标数据行结构的顺序信息采用第二时间戳信息记录。因此,以第一时间戳信息和第二时间戳信息作为凭证,即可明确上述相互对应的目标记录与目标数据行结构的先后顺序信息,从而明确是否应当以上述的目标数据为依据对上述的目标数据行结构进行操作,进而对时间戳信息预设执行条件,若其不满足执行条件,则不执行该条记录所指示的操作。例如,以第一时间戳信息和第二时间戳信息为依据来判断待回放的事务是否为针对目标数据行结构的新事物,若是新的事务,则执行该条目标数据指示的操作,若不是,则可以忽略该条目标记录即可。
综上所述,在需要恢复操作日志中的对应操作时,使用由第一时间戳信息和第二时间戳信息组成的预设规则作为执行对应操作的条件,能够在多个恢复线程并行执行数据恢复的前提下,在乱序回放的基础之上,正确有序地完成数据恢复,从而解决数据并行恢复导致的写冲突问题。尤其是在针对某些类似金融场景中的应用中,例如交易系统这样的高频度、高并发的应用场景之中,不但能够满足低延迟,高并发、高一致性的数据库操作特性的要求,还能够很大程度上提升数据库的数据恢复操作稳定性。
可选的,所述数据行结构包括多个版本的数据行内容,并且每个版本的数据行内容均包括版本时间戳信息,所述版本时间戳信息指示该版本的数据行内容的创建时间,并且所述第一时间戳信息是最新版本的数据行内容对应的版本时间戳信息。
通过采用上述技术方案,采用多版本并发控制的方式,对于一个数据行结构维护多个版本,在每一次对改数据行结构进行操作之后均生成一个新的版本,并且随之更新新版本和旧版本对应的时间戳信息,能够防止并发操作时发生冲突,造成某些冲突的事务回滚,从而正确处理对相同数据对象的并发读写操作,提升并发操作执行效率与精准度,完善系统性能。
可选的,所述依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构的步骤包括:
按照接收时间顺序依次将所述待回放的记录作为目标记录;
读取所述目标记录中的目标对象标记;
将所述目标对象标记作为查询主键并基于所述查询主键确定所述目标记录对应的目标数据行结构。
通过采用上述技术方案,每个目标记录对应有确定的目标数据行结构,也即目标记录中的信息至少包括其所指示的操作和这一操作对应的操作对象,而这一操作对象即为其对应的目标数据行结构。当恢复线程并行地接收到来自主线程的目标记录后,即可通过指示上述操作对象的信息确定出其所对应的目标数据行结构。
可选的,所述第一时间戳信息与所述第二时间戳信息均基于实际时间值以全序递增的形式产生,并且所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤包括:
在所述目标记录指示的操作是数据行插入操作的情况下,执行下列动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在的情况下,根据所述目标记录指示的内容创建所述目标数据行结构及其最新版本的数据行内容;
在所述目标数据行结构当前存在且有效的情况下,执行下列数据行插入动作:
获取所述目标记录的所述第二时间戳信息;
获取所述目标数据行结构的所述第一时间戳信息;
比较所述第一时间戳信息所指示的值与所述第二时间戳信息所指示的值的大小;
在所述第二时间戳信息所指示的值大于所述第一时间戳信息所指示的值的情况下,使用所述目标记录指示的内容覆盖所述目标数据行结构中现有的最新版本的数据行内容;
在所述第二时间戳信息所指示的值小于或等于所述第一时间戳信息所指示的值的情况下,不执行任何动作。
通过采用上述技术方案,在数据行插入的操作过程中,其所对应的数据行结构指其对应的基础操作对象。若这一操作对象并不存在,那么便无法进行对应的操作,因此需要根据目标记录指示的内容创建目标数据行结构,并且在此之后执行对应的插入数据行操作,也即创建其最新版本的数据行内容。
而若这一操作对象是存在且有效的,则可以直接执行目标记录指示的操作,也即直接创建其最新版本的数据行内容。而创建其最新版本的数据行内容的过程即为,比较第一时间戳信息与第二时间戳信息,并基于上述的比较结果确定是否应当执行上述的插入数据行的操作,从而在不产生写冲突的基础之上,实现可对于插入数据行这一操作的并行数据恢复。
可选的,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述目标记录指示的操作是数据行删除操作的情况下,执行下列数据行删除动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;
在所述目标数据行结构当前存在且有效的情况下,执行下列数据行删除动作:
获取所述目标记录的所述第二时间戳信息;
获取所述目标数据行结构的所述第一时间戳信息;
比较所述第一时间戳信息所指示的值与所述第二时间戳信息所指示的值的大小;
在所述第二时间戳信息所指示的值大于所述第一时间戳信息所指示的值的情况下,将所述目标数据行结构的当前状态变更为无效;
在所述第二时间戳信息所指示的值小于或等于所述第一时间戳信息所指示的值的情况下,不执行任何动作。
通过采用上述技术方案,在数据行删除的操作过程中,其所对应的数据行结构指其对应的基础操作对象。若这一操作对象并不存在,那么将不能也无意义进行删除的操作。而若这一操作对象是存在且有效的,则可以直接执行删除操作,也即将目标数据行结构的当前状态变更为无效。由于采用第一时间戳信息和第二时间戳信息判断是否执行当前的操作,在使用同一查询主键的情况下亦可保证不出现写冲突的问题。
可选的,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述目标记录指示的操作是数据行更新操作的情况下,执行下列动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;
在所述目标数据行结构当前存在且有效的情况下,针对所述目标数据行结构先执行所述数据行删除动作,并在所述数据行删除动作完成后再执行所述数据行插入动作。
通过采用上述技术方案,更新操作逻辑上是对行数据进行修改,而实际实现则是通过给一个行添加两个版本完成的,简言之,先增加一个版本并标记为已删除状态,随后再增加一个版本,并且该版本中包含最新的数据。也即先执行删除动作,再执行插入动作。
可选的,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在执行完成所述数据行插入动作或者所述数据行删除动作之后,将所述目标数据行结构的所述第一时间戳信息所指示的值设置为与所述目标记录的所述第二时间戳信息所指示的值一致。
通过采用上述技术方案,在每一次执行过目标记录对应的操作之后,其对应的数据行结构均被重新赋值,并且其对应的第一时间戳信息与本次进行的操作对应的目标记录所对应的第二时间戳信息一致,能够保证与下一次操作这一数据行结构的目标记录所对应的第二时间戳信息相比较的是最新的第一时间戳信息。
可选的,所述多个数据行结构归属于至少一个数据表结构,所述待回放的记录包括第一类型记录和第二类型记录,其中,所述第一类型记录所指示的操作包括所述数据行插入操作、所述数据行删除操作、所述数据行更新操作中的一个或多个,所述第二类型记录所指示的操作针对所述数据表结构,并且所述将所述待回放的记录分发至多个恢复线程的步骤包括:
按照时间顺序依次读取所述待回放的记录,并针对每个待回放的记录执行下列动作:
在该待回放的记录为所述第一类型记录的情况下,将所述第一类型记录分发至对应的恢复线程;
在该待回放的记录为所述第二类型记录的情况下,执行所述第二类型记录所指示的针对目标数据表结构的操作。
通过采用上述技术方案,在数据库的操作日志中存在通常同时存在针对数据行结构的操作记录和针对一个或多个数据行结构组成的数据表结构的操作记录,而针对数据表结构的操作通常是全局性的操作,只有先行执行完成后才能正确地执行后续的针对数据行结构的操作。
因此,当读取到针对所述数据行结构的第一类型记录时,可以对其进行直接的分发动作,但是在读取到针对数据表结构的第二类型记录时,应当先行停止对后续记录的读取和分发,由主线程先执行完成对于第二类型记录所指示的针对目标数据表结构的操作,再继续后续记录的读取和分发,即可解决对应数据表不存在等问题。
可选的,所述数据表结构包括主键索引子结构,并且所述第二类型记录所指示的操作包括下列项中的一个或多个:创建新的数据表结构、创建新的主键索引子结构、删除已存在的数据表结构、以及删除已存在的主键索引子结构。
可选的,所述数据表结构还包括二级索引子结构,并且所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述操作日志中的记录所指示的操作全部执行完毕之后,将每个所述数据表结构与一个所述恢复线程相关联;
所述多个恢复线程并行地在相关联的数据表结构中创建或更新该数据表结构对应的所述二级索引子结构。
通过采用上述技术方案,当操作日志中的全部记录指示的数据恢复完毕后,还需要根据数据表结构中的内容来恢复出每个数据表结构的二级索引。本方案采用多线程并行执行的方式进行二级索引构建,使得每个数据表由单独的上述恢复线程来独立并行构建二级索引,提高了数据恢复效率。
第二方面,本申请提供一种数据恢复装置,采用如下技术方案:
一种数据恢复装置,用于数据库,所述数据库包括多个数据行结构,并且每个所述数据行结构均包括第一时间戳信息,所述装置包括主执行单元和多个辅助执行单元;
所述主执行单元用于获取与所述数据库相关联的操作日志,并依序读取所述操作日志中待回放的记录,以及将所述待回放的记录分发至多个辅助执行单元,其中,所述操作日志中的记录包括第二时间戳信息;
所述多个辅助执行单元用于并行地执行下列操作:
依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构;
根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作。
第三方面,本申请提供一种存储介质,采用如下技术方案:
一种存储介质,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的数据恢复方法。
综上所述,本申请包括以下至少一种有益技术效果:
本申请提供的方案能够在多个恢复线程并行执行数据恢复的前提下,在乱序回放的基础之上,正确有序地完成数据恢复,从而解决数据并行恢复导致的写冲突问题。
在针对某些类似金融场景中的应用中,例如交易系统这样的高频度、高并发的应用场景之中,采用本申请提供的方案不但能够满足低延迟,高并发、高一致性的数据库操作特性的要求,还能够很大程度上提升数据库的数据恢复操作稳定性。
采用多版本并发控制的方式,对于一个数据行结构维护多个版本,在每一次对改数据行结构进行操作之后均生成一个新的版本,并且随之更新新版本和旧版本对应的时间戳信息,能够防止并发操作时发生冲突,造成某些冲突的事务回滚,从而正确处理对相同数据对象的并发读写操作,提升并发操作执行效率与精准度,完善系统性能。
由主线程先执行完成对于第二类型记录所指示的针对目标数据表结构的操作,再继续后续记录的读取和分发,即可解决对应数据表不存在等问题。
附图说明
图1是本申请实施例中一种数据恢复方法的整体步骤流程图。
图2是本申请实施例中一种数据恢复方法的子步骤S4的流程图。
图3是本申请实施例中一种数据恢复方法的在A情况下的子步骤S51的流程图。
图4是本申请实施例中一种数据恢复方法的在B情况下的子步骤S51的流程图。
图5是本申请实施例中一种数据恢复方法的子步骤S522的流程图。
图6是本申请实施例中一种数据恢复方法的子步骤S53的流程图。
图7是本申请实施例中一种数据恢复装置的逻辑连接图。
附图标记说明:
1、数据恢复装置;11、主执行单元;12、辅助执行单元。
具体实施方式
以下结合附图,对本申请作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在以下描述中,为了解释的目的,阐述了很多具体细节,以便提供对发明构思的彻底理解。作为本说明书的一部分,本公开的附图中的一些附图以框图形式表示结构和设备,以避免使所公开的原理复杂难懂。为了清晰起见,实际具体实施的并非所有特征都有必要进行描述。在本公开中对“一个具体实施”或“具体实施”的提及意指结合该具体实施所述的特定特征、结构或特性被包括在至少一个具体实施中,并且对“一个具体实施”或“具体实施”的多个提及不应被理解为必然地全部是指同一具体实施。
除非明确限定,否则术语“一个”、“一种”和“该”并非旨在指代单数实体,而是包括其特定示例可以被用于举例说明的一般性类别。因此,术语“一个”或“一种”的使用可以意指至少一个的任意数目,包括“一个”、“一个或多个”、“至少一个”和“一个或不止一个”。术语“或”意指可选项中的任意者以及可选项的任何组合,包括所有可选项,除非可选项被明确指示是相互排斥的。短语“中的至少一者”在与项目列表组合时是指列表中的单个项目或列表中项目的任何组合。所述短语并不要求所列项目的全部,除非明确如此限定。
本申请实施例公开一种数据恢复方法。参照图1,一种数据恢复方法,用于数据库,值得注意的是,在本实施例中,上述数据库包括多个数据行结构,并且每个上述数据行结构均包括第一时间戳信息。具体地,在不同的实施例中,上述的数据行结构可以表现为不同的形式,并以不同的方式生效、变更和失效,同理,上述的第一时间戳信息也可以通过不同的方式产生和更新,并承载不同类型的信息。作为示例地,在本实施例中,上述数据行结构包括多个版本的数据行内容,并且每个版本的数据行内容均包括版本时间戳信息,上述版本时间戳信息指示该版本的数据行内容的创建时间,并且上述第一时间戳信息是最新版本的数据行内容对应的版本时间戳信息,也即最新版本的数据行内容的创建时间。换句话说,在数据恢复的过程中,针对每个上述的数据行结构,都只会维护一个版本,并保证在数据恢复完成后,该数据行结构所指示的数据是最新的。
上述的数据恢复方法包括以下步骤,并且执行以下步骤的主体包括主线程和多个恢复线程:
S01.主线程操作步骤:
S1.获取与上述数据库相关联的操作日志。
具体地,上述操作日志中的记录包括第二时间戳信息,并且上述第一时间戳信息指示其所属的数据行结构所接受的最后一次操作的实施时间,上述第二时间戳信息指示其所属的记录所表征的操作发起的时间。
在不同的实施例中,上述的第一时间戳信息与第二时间戳信息均可以由不同的方式产生,但凡能够表征对应操作的时间信息即可。作为示例地,上述第一时间戳信息与上述第二时间戳信息均基于实际时间值以全序递增的形式产生。进一步地,上述的第一时间戳信息和第二时间戳信息均可以由全局时间戳分配器产生,其维护了一个系统级别的64位时间戳,并且具备单调递增的特性。
针对操作日志,作为解释地,在内存数据库启用后,为满足数据库对持久性、稳定性的要求,在每一个事务执行对内存数据的修改操作前,均需要先将修改日志写入操作日志对应的文件中,再执行对内存中的数据的修改操作。因此,操作日志也自然成为了数据库恢复的基础。在经历了如系统宕机重启等情况后,通过对于操作日志中的记录进行回放的方式来恢复数据。
S2.依序读取上述操作日志中待回放的记录。
S3.将上述待回放的记录分发至多个恢复线程。
针对上述的分发过程,具体地,每一个完整的事务中均包含一个或多个记录,并且每一个事务中的最后一个记录均包含一个标志该事物结束的提交信息,在读取这些记录时,若读取到该提交信息,则可以将前序待回放记录的集合作为一个完整的事务,并将其分发至某个恢复线程中执行后续的恢复操作。
作为补充地,在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元,是恢复和并发控制的基本单位。其具有四个属性,即原子性、一致性、隔离性、持久性。其中,原子性指一个事务是一个不可分割的工作单位,事务中包括的操作只存在全部执行和全部不执行两种情况;一致性指事务必须是使数据库从一个一致性状态变到另一个一致性状态,并且一致性与原子性是密切相关的;隔离性指一个事务的执行不能被其他事务干扰,也即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰;持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,也即后续的其他操作或故障不应该对其有任何影响。
进一步地,在不同的实施例中,针对不同类型的待回放记录,可以通过不同的方式进行分发操作,本实施例具体但非限定地提供一种方案,以上述待回放的记录包括第一类型记录和第二类型记录为前提,如下子步骤S31所示:
S31.按照时间顺序依次读取上述待回放的记录,并针对每个待回放的记录执行下列动作:
在该待回放的记录为上述第一类型记录的情况下,将上述第一类型记录分发至对应的恢复线程;
在该待回放的记录为上述第二类型记录的情况下,执行上述第二类型记录所指示的针对目标数据表结构的操作。
具体地,上述第一类型记录所指示的操作包括数据行插入操作、数据行删除操作、数据行更新操作中的一个或多个,并且上述多个数据行结构归属于至少一个数据表结构,而上述第二类型记录所指示的操作针对上述数据表结构。
进一步地,上述数据表结构包括主键索引子结构和二级索引子结构,并且上述第二类型记录所指示的操作包括下列项中的一个或多个:
创建新的数据表结构、创建新的主键索引子结构、删除已存在的数据表结构、以及删除已存在的主键索引子结构。
作为解释地,索引指用于加速对关系表的某个列的查询操作的数据结构,常见的索引包括B树索引,哈希索引等。其中,主键索引指建立在关系表的主键列上的索引结构,并且具有唯一性;二级索引指建立在关系表的非主键列上的索引结构。
在数据库的操作日志中存在通常同时存在针对数据行结构的操作记录和针对一个或多个数据行结构组成的数据表结构的操作记录,而针对数据表结构的操作通常是全局性的操作,只有先行执行完成后才能正确地执行后续的针对数据行结构的操作。
因此,当读取到针对上述数据行结构的第一类型记录时,可以对其进行直接的分发动作,但是在读取到针对数据表结构的第二类型记录时,应当先行停止对后续记录的读取和分发,由主线程先执行完成对于第二类型记录所指示的针对目标数据表结构的操作,再继续后续记录的读取和分发。
S02.上述多个恢复线程并行地执行下列操作:
参照图1和图2,具体地,上述的主线程作为数据恢复过程中操作日志的读取线程,在读取到操作日志中的待回放记录后,将所读取的记录分发至多个恢复线程中。而多个恢复线程是并行执行对应的操作的,从而使得多个恢复线程进行的恢复动作是同时进行,例如并行构建数据表的索引,减少了系统整体恢复的时间,提高了系统可用性。
S4.依次将接收到的上述待回放的记录作为目标记录,并确定上述目标记录对应的目标数据行结构。
针对上述确定对应的目标数据行结构的过程,在不同的实施例中,可以通过不同的方式执行,本实施例具体但非限定地提供一种方案,如下子步骤S41-S43所示:
S41.按照接收时间顺序依次将上述待回放的记录作为目标记录;
S42.读取上述目标记录中的目标对象标记;
S43.将上述目标对象标记作为查询主键并基于上述查询主键确定上述目标记录对应的目标数据行结构。
每个目标记录对应有确定的目标数据行结构,也即目标记录中的信息至少包括其所指示的操作和这一操作对应的操作对象,而这一操作对象即为其对应的目标数据行结构。当恢复线程并行地接收到来自主线程的目标记录后,即可通过指示上述操作对象的信息确定出其所对应的目标数据行结构。
S5.根据上述目标记录的上述第二时间戳信息以及对应的上述目标数据行结构的上述第一时间戳信息执行上述目标记录所指示的针对上述目标数据行结构的操作。
具体地,上述第一时间戳信息与上述第二时间戳信息均基于实际时间值以全序递增的形式产生。
针对上述执行对应的操作的过程,在不同的实施例中,可以通过不同的方式进行,本实施例具体但非限定地提供一种方案,如下子步骤S51-S56所示:
参照图3和图4,其中,针对数据行插入操作执行如下子步骤S51的动作:
S51.在上述目标记录指示的操作是数据行插入操作的情况下,执行下列动作:
S511.确认上述目标数据行结构当前是否存在。
在上述目标数据行结构当前不存在的情况下,执行如下子步骤S512A的动作:
S512A.根据上述目标记录指示的内容创建上述目标数据行结构及其最新版本的数据行内容;
在上述目标数据行结构当前存在且有效的情况下,执行下列数据行插入动作,如子步骤S512B-S514B所示:
S512B.获取上述目标记录的上述第二时间戳信息;
S513B.获取上述目标数据行结构的上述第一时间戳信息;
S514B.比较上述第一时间戳信息所指示的值与上述第二时间戳信息所指示的值的大小。
具体地,在上述第二时间戳信息所指示的值大于上述第一时间戳信息所指示的值的情况下,使用上述目标记录指示的内容覆盖上述目标数据行结构中现有的最新版本的数据行内容;在上述第二时间戳信息所指示的值小于或等于上述第一时间戳信息所指示的值的情况下,不执行任何动作。
在数据行插入的操作过程中,其所对应的数据行结构指其对应的基础操作对象。若这一操作对象并不存在,那么便无法进行对应的操作,因此需要根据目标记录指示的内容创建目标数据行结构,并且在此之后执行对应的插入数据行操作,也即创建其最新版本的数据行内容。而若这一操作对象是存在且有效的,则可以直接执行目标记录指示的操作,也即直接创建其最新版本的数据行内容。而创建其最新版本的数据行内容的过程即为,比较第一时间戳信息与第二时间戳信息,并基于上述的比较结果确定是否应当执行上述的插入数据行的操作,从而在不产生写冲突的基础之上,实现可对于插入数据行这一操作的并行数据恢复。
针对数据行删除操作执行如下子步骤S52的操作:
S52.在上述目标记录指示的操作是数据行删除操作的情况下,执行下列数据行删除动作:
S521.确认上述目标数据行结构当前是否存在。
具体地,在上述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;在上述目标数据行结构当前存在且有效的情况下,执行如下子步骤S522的动作:
S522.将上述目标数据行结构的当前状态变更为无效。
具体地,如果某个数据行结构的最新版本是删除标记的版本,那么在逻辑上,该数据行结构已经不存在了,因此,后续对这个数据行结构的任何操作均无效,也即更新操作需要在行最新版本不为删除的情况下进行。因此,若仅为上述的情况,则在删除操作中可以不采用上述的第一时间戳信息与第二时间戳信息来判断是否进行对应的删除操作。
而在实际操作过程中,确定一个数据行结构是需要通过一个唯一主键来完成的,例如key=1的行被删除了,而后续操作过程中又插入key=1的行,二者虽查询主键相同,但数据内容却不同,这种情况将会导致数据恢复的错误。因此需要通过第一时间戳信息与第二时间戳信息来确保当前数据行结构的最新版本是有效的。具体的,上述的子步骤S522还包括以下子步骤S5221-S5225:
参照图5,执行下列数据行删除动作:
S5221.获取所述目标记录的所述第二时间戳信息;
S5222.获取所述目标数据行结构的所述第一时间戳信息;
S5223.比较所述第一时间戳信息所指示的值与所述第二时间戳信息所指示的值的大小;
S5224.在所述第二时间戳信息所指示的值大于所述第一时间戳信息所指示的值的情况下,将所述目标数据行结构的当前状态变更为无效;
S5225.在所述第二时间戳信息所指示的值小于或等于所述第一时间戳信息所指示的值的情况下,不执行任何动作。
进一步地,更新操作逻辑上是对行数据进行修改,而实际实现则是通过给一个行添加两个版本完成的,简言之,先增加一个版本并标记为已删除状态,随后再增加一个版本,并且该版本中包含最新的数据。
参照图1和图6,具体地,在不同的实施例中,针对数据行更新操作可以采用不同的方法,本申请费具体但非限定地提供以下如下子步骤S53的方案:
S53.在上述目标记录指示的操作是数据行更新操作的情况下,执行下列动作:
S531.确认上述目标数据行结构当前是否存在。
具体地,在上述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;在上述目标数据行结构当前存在且有效的情况下,执行如下子步骤S532的动作:
S532.针对上述目标数据行结构先执行上述数据行删除动作,并在上述数据行删除动作完成后再执行上述数据行插入动作。
进一步地,本实施例中在执行完成上述数据行插入动作或者上述数据行删除动作之后,还包括以下如S54所示的子步骤:
S54.将上述目标数据行结构的上述第一时间戳信息所指示的值设置为与上述目标记录的上述第二时间戳信息所指示的值一致。
在每一次执行过目标记录对应的操作之后,其对应的数据行结构均被重新赋值,并且其对应的第一时间戳信息与本次进行的操作对应的目标记录所对应的第二时间戳信息一致,能够保证与下一次操作这一数据行结构的目标记录所对应的第二时间戳信息相比较的是最新的第一时间戳信息。
进一步地,本实施例中在上述操作日志中的记录所指示的操作全部执行完毕之后,还包括以下如S55-S56所示的子步骤:
S55.将每个上述数据表结构与一个上述恢复线程相关联;
S56.上述多个恢复线程并行地在相关联的数据表结构中创建或更新该数据表结构对应的上述二级索引子结构。
当操作日志中的全部记录指示的数据恢复完毕后,还需要根据数据表结构中的内容来恢复出每个数据表结构的二级索引。本方案采用多线程并行执行的方式进行二级索引构建,使得每个数据表由单独的上述恢复线程来独立并行构建二级索引,提高了数据恢复效率。
综上所述,对于多线程的并行操作,其难点在于,在受到系统调度影响的情况下,上述的多个恢复线程无法按照先前的顺序正确地实现回放的目的,而常会出现乱序的冲突问题。作为示例地,若多个恢复线程并行操作,那么每个恢复线程所执行的操作将会出现先后顺序不同的情况,由于系统的调度限制,很可能会出现前序的记录尚未执行,而后续的事务已经执行完毕的情况,这将会导致不同程度的写冲突问题。
本方案采用了时间戳来解决上述的乱序回放问题,对于目标记录采用上述的第一时间戳信息记录其顺序信息,同理,对于目标数据行结构的顺序信息采用第二时间戳信息记录。因此,以第一时间戳信息和第二时间戳信息作为凭证,即可明确上述相互对应的目标记录与目标数据行结构的先后顺序信息,从而明确是否应当以上述的目标数据为依据对上述的目标数据行结构进行操作,进而对时间戳信息预设执行条件,若其不满足执行条件,则不执行该条记录所指示的操作。例如,以第一时间戳信息和第二时间戳信息为依据来判断待回放的事务是否为针对目标数据行结构的新事物,若是新的事务,则执行该条目标数据指示的操作,若不是,则可以忽略该条目标记录即可。
因此,在需要恢复操作日志中的对应操作时,使用由第一时间戳信息和第二时间戳信息组成的预设规则作为执行对应操作的条件,能够在多个恢复线程并行执行数据恢复的前提下,在乱序回放的基础之上,正确有序地完成数据恢复,从而解决数据并行恢复导致的写冲突问题。尤其是在针对某些类似金融场景中的应用中,例如交易系统这样的高频度、高并发的应用场景之中,不但能够满足低延迟,高并发、高一致性的数据库操作特性的要求,还能够很大程度上提升数据库的数据恢复操作稳定性。
本申请提供一种数据恢复装置,用于数据库,参照图1和图7,数据库包括多个数据行结构,并且每个数据行结构均包括第一时间戳信息,数据恢复装置1包括主执行单元11和多个辅助执行单元12。
具体地,主执行单元11用于获取与数据库相关联的操作日志,并依序读取操作日志中待回放的记录,以及将待回放的记录分发至多个辅助执行单元12,其中,操作日志中的记录包括第二时间戳信息。
具体地,多个辅助执行单元12用于并行地执行下列操作:首先,依次将接收到的待回放的记录作为目标记录,并确定目标记录对应的目标数据行结构。其次,根据目标记录的第二时间戳信息以及对应的目标数据行结构的第一时间戳信息执行目标记录所指示的针对目标数据行结构的操作。
进一步地,上述数据恢复装置的工作原理与上述数据恢复方法的工作原理相同,此处不在赘述。
本申请提供一种存储介质,存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述的数据恢复方法。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。
Claims (12)
1.一种数据恢复方法,用于数据库,所述数据库包括多个数据行结构,并且每个所述数据行结构均包括第一时间戳信息,所述第一时间戳信息指示其所属的数据行结构所接受的最后一次操作的实施时间,其特征在于,所述方法包括:
主线程获取与所述数据库相关联的操作日志,并依序读取所述操作日志中待回放的记录,以及将所述待回放的记录分发至多个恢复线程,其中,所述操作日志中的记录包括第二时间戳信息,所述第二时间戳信息指示其所属的记录所表征的操作发起的时间;
所述多个恢复线程并行地执行下列操作:
依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构;
根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作。
2.根据权利要求1所述的数据恢复方法,其特征在于,所述数据行结构包括多个版本的数据行内容,并且每个版本的数据行内容均包括版本时间戳信息,所述版本时间戳信息指示该版本的数据行内容的创建时间,并且所述第一时间戳信息是最新版本的数据行内容对应的版本时间戳信息。
3.根据权利要求1所述的数据恢复方法,其特征在于,所述依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构的步骤包括:
按照接收时间顺序依次将所述待回放的记录作为目标记录;
读取所述目标记录中的目标对象标记;
将所述目标对象标记作为查询主键并基于所述查询主键确定所述目标记录对应的目标数据行结构。
4.根据权利要求1所述的数据恢复方法,其特征在于,所述第一时间戳信息与所述第二时间戳信息均基于实际时间值以全序递增的形式产生,并且所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤包括:
在所述目标记录指示的操作是数据行插入操作的情况下,执行下列动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在的情况下,根据所述目标记录指示的内容创建所述目标数据行结构及其最新版本的数据行内容;
在所述目标数据行结构当前存在且有效的情况下,执行下列数据行插入动作:
获取所述目标记录的所述第二时间戳信息;
获取所述目标数据行结构的所述第一时间戳信息;
比较所述第一时间戳信息所指示的值与所述第二时间戳信息所指示的值的大小;
在所述第二时间戳信息所指示的值大于所述第一时间戳信息所指示的值的情况下,使用所述目标记录指示的内容覆盖所述目标数据行结构中现有的最新版本的数据行内容;
在所述第二时间戳信息所指示的值小于或等于所述第一时间戳信息所指示的值的情况下,不执行任何动作。
5.根据权利要求4所述的数据恢复方法,其特征在于,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述目标记录指示的操作是数据行删除操作的情况下,执行下列数据行删除动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;
在所述目标数据行结构当前存在且有效的情况下,执行下列数据行删除动作:
获取所述目标记录的所述第二时间戳信息;
获取所述目标数据行结构的所述第一时间戳信息;
比较所述第一时间戳信息所指示的值与所述第二时间戳信息所指示的值的大小;
在所述第二时间戳信息所指示的值大于所述第一时间戳信息所指示的值的情况下,将所述目标数据行结构的当前状态变更为无效;
在所述第二时间戳信息所指示的值小于或等于所述第一时间戳信息所指示的值的情况下,不执行任何动作。
6.根据权利要求5所述的数据恢复方法,其特征在于,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述目标记录指示的操作是数据行更新操作的情况下,执行下列动作:
确认所述目标数据行结构当前是否存在;
在所述目标数据行结构当前不存在或者当前状态为无效的情况下,不执行任何动作;
在所述目标数据行结构当前存在且有效的情况下,针对所述目标数据行结构先执行所述数据行删除动作,并在所述数据行删除动作完成后再执行所述数据行插入动作。
7.根据权利要求2所述的数据恢复方法,其特征在于,所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在执行完成所述数据行插入动作或者所述数据行删除动作之后,将所述目标数据行结构的所述第一时间戳信息所指示的值设置为与所述目标记录的所述第二时间戳信息所指示的值一致。
8.根据权利要求1-7中任意一项所述的数据恢复方法,其特征在于,所述多个数据行结构归属于至少一个数据表结构,所述待回放的记录包括第一类型记录和第二类型记录,其中,所述第一类型记录所指示的操作包括所述数据行插入操作、所述数据行删除操作、所述数据行更新操作中的一个或多个,所述第二类型记录所指示的操作针对所述数据表结构,并且所述将所述待回放的记录分发至多个恢复线程的步骤包括:
按照时间顺序依次读取所述待回放的记录,并针对每个待回放的记录执行下列动作:
在该待回放的记录为所述第一类型记录的情况下,将所述第一类型记录分发至对应的恢复线程;
在该待回放的记录为所述第二类型记录的情况下,执行所述第二类型记录所指示的针对目标数据表结构的操作。
9.根据权利要求8所述的数据恢复方法,其特征在于,所述数据表结构包括主键索引子结构,并且所述第二类型记录所指示的操作包括下列项中的一个或多个:创建新的数据表结构、创建新的主键索引子结构、删除已存在的数据表结构、以及删除已存在的主键索引子结构。
10.根据权利要求9所述的数据恢复方法,其特征在于,所述数据表结构还包括二级索引子结构,并且所述根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作的步骤还包括:
在所述操作日志中的记录所指示的操作全部执行完毕之后,将每个所述数据表结构与一个所述恢复线程相关联;
所述多个恢复线程并行地在相关联的数据表结构中创建或更新该数据表结构对应的所述二级索引子结构。
11.一种数据恢复装置,用于数据库,所述数据库包括多个数据行结构,并且每个所述数据行结构均包括第一时间戳信息,所述第一时间戳信息指示其所属的数据行结构所接受的最后一次操作的实施时间,其特征在于,所述装置包括主执行单元(11)和多个辅助执行单元(12);
所述主执行单元(11)用于获取与所述数据库相关联的操作日志,并依序读取所述操作日志中待回放的记录,以及将所述待回放的记录分发至所述多个辅助执行单元(12),其中,所述操作日志中的记录包括第二时间戳信息,所述第二时间戳信息指示其所属的记录所表征的操作发起的时间;
所述多个辅助执行单元(12)用于并行地执行下列操作:
依次将接收到的所述待回放的记录作为目标记录,并确定所述目标记录对应的目标数据行结构;
根据所述目标记录的所述第二时间戳信息以及对应的所述目标数据行结构的所述第一时间戳信息执行所述目标记录所指示的针对所述目标数据行结构的操作。
12.一种存储介质,其特征在于,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1-10中任意一项所述的数据恢复方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310142026.9A CN115858252B (zh) | 2023-02-21 | 2023-02-21 | 一种数据恢复方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310142026.9A CN115858252B (zh) | 2023-02-21 | 2023-02-21 | 一种数据恢复方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115858252A CN115858252A (zh) | 2023-03-28 |
CN115858252B true CN115858252B (zh) | 2023-06-02 |
Family
ID=85658513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310142026.9A Active CN115858252B (zh) | 2023-02-21 | 2023-02-21 | 一种数据恢复方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115858252B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117971839A (zh) * | 2024-03-29 | 2024-05-03 | 平凯星辰(北京)科技有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254094A (zh) * | 2016-07-19 | 2016-12-21 | 中国银联股份有限公司 | 一种数据同步方法及系统 |
CN106462594A (zh) * | 2014-04-10 | 2017-02-22 | 华为技术有限公司 | 一种大规模并行处理数据库的系统和方法 |
CN112800060A (zh) * | 2021-01-28 | 2021-05-14 | 百果园技术(新加坡)有限公司 | 数据处理方法、装置、计算机可读存储介质及电子设备 |
CN115202931A (zh) * | 2022-07-18 | 2022-10-18 | 曙光信息产业(北京)有限公司 | 数据恢复方法、装置、设备、存储介质和程序产品 |
CN115658391A (zh) * | 2022-11-29 | 2023-01-31 | 贵州易鲸捷信息技术有限公司 | 基于QianBase MPP数据库的WAL机制的备份恢复方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10430298B2 (en) * | 2010-10-28 | 2019-10-01 | Microsoft Technology Licensing, Llc | Versatile in-memory database recovery using logical log records |
EP2856356A2 (en) * | 2012-06-04 | 2015-04-08 | Google, Inc. | Systems and methods of increasing database access concurrency using granular timestamps |
US9575849B2 (en) * | 2014-11-25 | 2017-02-21 | Sap Se | Synchronized backup and recovery of database systems |
EP3089051B1 (en) * | 2015-04-28 | 2018-04-11 | Micro Systemation AB | Database rollback using wal |
CN109918386B (zh) * | 2019-01-31 | 2021-04-30 | 北京明略软件系统有限公司 | 一种数据恢复方法和装置、计算机可读存储介质 |
US11080257B2 (en) * | 2019-05-13 | 2021-08-03 | Snowflake Inc. | Journaled tables in database systems |
CN115087966A (zh) * | 2021-01-13 | 2022-09-20 | 华为云计算技术有限公司 | 一种数据恢复方法、装置、设备、介质及程序产品 |
CN115145697B (zh) * | 2022-07-05 | 2023-07-25 | 中电金信软件有限公司 | 数据库事务的处理方法、装置及电子设备 |
-
2023
- 2023-02-21 CN CN202310142026.9A patent/CN115858252B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462594A (zh) * | 2014-04-10 | 2017-02-22 | 华为技术有限公司 | 一种大规模并行处理数据库的系统和方法 |
CN106254094A (zh) * | 2016-07-19 | 2016-12-21 | 中国银联股份有限公司 | 一种数据同步方法及系统 |
CN112800060A (zh) * | 2021-01-28 | 2021-05-14 | 百果园技术(新加坡)有限公司 | 数据处理方法、装置、计算机可读存储介质及电子设备 |
CN115202931A (zh) * | 2022-07-18 | 2022-10-18 | 曙光信息产业(北京)有限公司 | 数据恢复方法、装置、设备、存储介质和程序产品 |
CN115658391A (zh) * | 2022-11-29 | 2023-01-31 | 贵州易鲸捷信息技术有限公司 | 基于QianBase MPP数据库的WAL机制的备份恢复方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115858252A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US9244953B2 (en) | Systems and methods for asynchronous schema changes | |
US7996363B2 (en) | Real-time apply mechanism in standby database environments | |
US7801855B2 (en) | Method and apparatus for merging log entries in a database management system | |
US7587429B2 (en) | Method for checkpointing a main-memory database | |
Graefe | A survey of B-tree logging and recovery techniques | |
CN109992628B (zh) | 数据同步的方法、装置、服务器及计算机可读存储介质 | |
US8856083B2 (en) | Framework to optimize delete all row operations on database objects to improve throughput, query ability and flashback | |
US20130198139A1 (en) | Durability implementation plan in an in-memory database system | |
US8832022B2 (en) | Transaction processing device, transaction processing method and transaction processing program | |
US9542279B2 (en) | Shadow paging based log segment directory | |
CN113868028B (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
US20130290283A1 (en) | Scm-conscious transactional key-value store | |
US7225206B2 (en) | System and method for reorganizing stored data | |
US8108356B2 (en) | Method for recovering data in a storage system | |
CN109871386A (zh) | 非易失性存储器中的多版本并发控制(mvcc) | |
CN110515705B (zh) | 可扩展的持久性事务内存及其工作方法 | |
CN115858252B (zh) | 一种数据恢复方法、装置及存储介质 | |
US20120317384A1 (en) | Data storage method | |
CN111143277B (zh) | 一种数据处理方法、装置及电子设备 | |
CN113722052A (zh) | 一种基于数据双版本的非易失内存更新方法 | |
CN115576494B (zh) | 数据存储方法和计算设备 | |
CN117389696A (zh) | 一种应用于oltp内存数据库的并行恢复方法及存储介质 | |
CN117009361A (zh) | 一种两阶段无锁并行日志回放方法和装置 | |
CN115221145A (zh) | 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |