CN113986974A - 一种数据库事务管理方法及装置、恢复方法及装置 - Google Patents

一种数据库事务管理方法及装置、恢复方法及装置 Download PDF

Info

Publication number
CN113986974A
CN113986974A CN202111255065.7A CN202111255065A CN113986974A CN 113986974 A CN113986974 A CN 113986974A CN 202111255065 A CN202111255065 A CN 202111255065A CN 113986974 A CN113986974 A CN 113986974A
Authority
CN
China
Prior art keywords
transaction
identifier
write
record
current read
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.)
Pending
Application number
CN202111255065.7A
Other languages
English (en)
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.)
CCB Finetech Co Ltd
Original Assignee
CCB Finetech 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 CCB Finetech Co Ltd filed Critical CCB Finetech Co Ltd
Priority to CN202111255065.7A priority Critical patent/CN113986974A/zh
Publication of CN113986974A publication Critical patent/CN113986974A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文提供了一种数据库事务管理方法及装置、恢复方法及装置,涉及自动程序设计领域,数据库事务管理方法包括:处理当前读事务时,根据所述当前读事务最近的事务标识及第一预设标识生成规则,确定当前读事务的虚拟标识,其中,当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、当前读事务的虚拟标识以及当前读事务的隔离级别,确定该写事务记录是否对当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。本文在很大程度上降低事务日志的数据量,在数据库出现故障时,能够通过扫描事务日志快速事务恢复。

Description

一种数据库事务管理方法及装置、恢复方法及装置
技术领域
本文涉及自动程序设计领域,尤其涉及一种数据库事务管理方法及装置、恢复方法及装置。
背景技术
事务是数据库系统中的重要概念,数据库系统中的事务是构成单一逻辑工作单元的一组操作的集合,可以包含一个或者多个操作,且这些操作在逻辑上是一个整体,这些数据库操作要么全部成功执行,要么全部不执行。数据库事务分布在网络中相应节点上的一个或者多个操作的序列。
分布式数据库系统在实际使用中,可能会遇到一系列不可预期的故障,这些故障可能使得事务无法正常提交(Commit)或者回滚(Rollback),这些故障通常包括:1)诸如停电、CPU等硬件故障、操作系统故障、进程异常退出等在内的系统故障;2)外存等介质故障;3)计算机病毒等。
现有技术中的分布式数据库登记日志时,并未对事务进行区分,写事务及读事务均需建立事务日志,这就会使得事务日志数据量大,在数据库发生故障依据事务日志恢复数据时,存在事务恢复耗时较久的问题。
发明内容
本文用于解决现有技术中事务日志存在数据量大,数据库发生故障依据事务日志恢复数据时,存在事务恢复耗时较久的问题。
为了解决上述技术问题,本文的第一方面为数据库事务管理方法,包括:
处理当前读事务时,根据所述当前读事务最近的事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识,所述当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
作为本文的进一步实施例中,数据库事务管理方法还包括:
处理当前写事务时,根据所述当前写事务最近的历史写事务标识及第二预设标识生成规则,确定所述当前写事务标识;
将所述当前写事务相关的数据页写入到内存的数据缓冲区;
根据所述当前写事务,修改所述数据缓冲区中的数据页,由第一写数据服务将修改后数据页刷新至数据库的数据区中;
根据所述当前写事务标识及修改后数据页,在内存的事务日志缓冲区中构造写事务记录,由第二写数据服务将所述写事务记录刷新至数据库的事务日志中。
作为本文的进一步实施例中,数据库事务确定所述当前写事务标识之后,在内存的事务日志缓冲区中生成开始事务记录,由第三写数据服务将所述开始事务记录刷新至数据库的事务日志中;
所述写事务记录刷新至数据库的事务日志中后,在内存的事务日志缓冲区中生成提交事务记录,由第四写数据服务将所述提交事务记录刷新至数据库的事务日志中。
作为本文的进一步实施例中,数据库事务所述写事务记录至少包括一条元组记录,每条元组记录至少包括写事务标识、行标识、所有列数据及标记位;
所述标记位用于识别写操作类型,当所述标记位标识的为有效时,对应的操作类型为更新操作或新增操作;当所述标记位标识的为无效时,对应的操作类型为删除事务。
作为本文的进一步实施例中,数据库事务所述写事务记录至少包括一条元组记录,每条元组记录:写事务标识、行标识、差异数据、标记位,其中,差异数据包括复制项、删除项和/或新增项;
所述标记位用于识别写操作类型,当所述标记位标识的为有效时,对应的操作类型为更新操作或新增操作;当所述标记位标识的为无效时,对应的操作类型为删除事务;
所述复制项用于记录不变数据所占字节,所述删除项用于记录删除数据所占字节,所述新增项用于记录修改后数据;
所述复制项、删除项和/或新增项按照所述行标识对应的所有列的顺序排布。
作为本文的进一步实施例中,数据库事务同一行标识的元组记录之间通过指针链接。
作为本文的进一步实施例中,将所述当前写事务相关的数据页写入到内存的数据缓冲区之后对其增加排他锁;
构造完所述写事务记录之后,释放所述排他锁。
作为本文的进一步实施例中,所述第一预设标识生成规则包括第一标识生成子规则及第二标识生成子规则;
根据所述当前读事务最近的历史事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识包括:
若所述当前读事务最近的历史事务为写事务,则根据所述当前读事务最近的历史写事务标识及第一标识生成子规则,确定所述当前读事务的虚拟标识;
若所述当前读事务最近的历史事务为读事务,则根据所述当前读事务最近的历史读事务标识及第二标识生成子规则,确定所述当前写事务的虚拟标识。
作为本文的进一步实施例中,根据所述当前读事务最近的历史写事务标识及第一标识生成子规则,确定所述当前读事务的虚拟标识,包括:
利用第一标识生成子规则,生成子标识并拼接所述当前读事务最近的历史写事务标识及子标识;
将拼接得到的标识作为所述当前读事务的虚拟标识。作为本文的进一步实施例中,根据所述当前读事务最近的历史读事务标识及第二标识生成子规则,确定所述当前写事务的虚拟标识,包括:
利用第二标识生成子规则,对所述当前读事务最近的历史读事务标识中的子标识进行调整;
将更新后的标识作为所述当前读事务的虚拟标识。
作为本文的进一步实施例中,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,包括:
判断该写事务记录中的写事务标识是否小于所述当前读事务的虚拟标识;
判断该写事务记录中的元组记录是否为行标识对应的最新记录;
若判断结果均为是,则根据所述当前读事务的隔离级别确定该写事务记录中的元组记录对所述当前读事务是否可见;
若判断结果为否,则确定该写事务记录中的元组记录对该读事务不可见。
本文的第二方面提供一种数据库事务恢复方法,采用前述实施例所述的方法记录事务日志,系统发生故障事务恢复过程包括:
对事务日志中的写事务记录进行正向扫描,对已提交事务及已回滚事务执行重做操作。
作为本文的进一步实施例中,若所述写事务记录至少包括:写事务标识、行标识、差异数据、标记位,其中,差异数据包括复制项、删除项和/或新增项,对已提交事务及已回滚事务执行重做操作,包括:
对于每一已提交事务和每一已回滚事务,查找该已提交事务以及该已回滚事务中各元组记录对应的第一条元组记录;
根据该已提交事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
根据该已回滚事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
将修改后数据写入到数据库的数据区中。
本文的第三方面还提供一种数据库事务管理装置,包括:
读事务处理模块,用于处理当前读事务时,根据所述当前读事务最近的事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识,所述当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
扫描模块,用于扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
本文的第四方面提供一种数据库事务恢复装置,包括:
扫描模块,用于当系统发生故障时,对事务日志中的写事务记录进行正向扫描,对已提交的事务及已回滚的事务执行重做操作,其中,所述写事务记录采用前述任一实施例所述的数据库事务管理方法记录。
本文的第五方面提供一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所述计算机程序被所述处理器运行时,执行前述任一项实施例所述的数据库事务管理方法的指令。
本文的第六方面提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行前述任一项实施例所述的数据库事务管理方法的指令。
本文的第七方面还提供一种计算机可读程序,当计算机中的处理器执行所述程序时,所述程序执行前述任一项实施例所述的数据库事务管理方法的指令。
本文提供的数据库事务管理方法及装置、事务恢复方法及装置,处理读事务时,对读事务分配虚拟标识,不对读事务产生事务记录,对写事务产生写事务记录,根据写事务记录中的写事务标识、当前读事务的虚拟标识以及当前读事务的隔离级别,确定写事务记录是否对当前读事务可见,进而完成数据读取操作。因实际应用中,大部分事务均为读事务,通过上述技术方案能够很大程度上降低事务日志的数据量,在数据库出现故障时,能够通过扫描事务日志即可快速事务恢复。
为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本文实施例数据库事务管理方法的第一流程图;
图2示出了本文实施例元组记录的第一示意图;
图3示出了本文实施例写事务记录的示意图;
图4示出了本文实施例元组记录的第二示意图;
图5示出了本文实施例数据库事务管理方法的第二流程图;
图6示出了本文实施例事务日志示意图;
图7示出了本文实施例写事务记录是否对当前读事务可见判断过程的流程图;
图8示出了本文实施例对已提交事务及已回滚事务执行重做操作的流程图;
图9示出了本文实施例数据库事务管理装置的第一结构图;
图10示出了本文实施例数据库事务管理装置的第二结构图;
图11示出了本文实施例数据库事务恢复装置的结构图;
图12示出了本文实施例Redo日志格式示意图;
图13示出了本文实施例计算机设备的结构图;
附图符号说明:
210、写事务标识;
220、行标识;
230、所有列数据;
240、标记位;
310、写事务标识;
320、行标识;
330、差异数据;
340、标记位;
331、复制项;
332、删除项;
333、新增项;
910、读事务处理模块;
920、扫描模块;
930、写事务处理模块;
1110、扫描模块;
1120、重做模块;
1302、计算机设备;
1304、处理器;
1306、存储器;
1308、驱动机构;
1310、输入/输出模块;
1312、输入设备;
1314、输出设备;
1316、呈现设备;
1318、图形用户接口;
1320、网络接口;
1322、通信链路;
1324、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
需要说明的是,本文的数据库事务管理方法及装置、恢复方法及装置可用于金融领域的数据库,也可用于除金融领域之外的任意领域的数据库,本文的数据库事务管理方法及装置、恢复方法及装置的应用领域不做限定。
本文一实施例中,如图1所示,提供一种数据库事务管理方法,用于解决现有技术中事务日志存在数据量大,数据库发生故障依据事务日志恢复数据时,存在事务恢复耗时较久的问题。具体的,数据库事务管理方法包括:
步骤110,处理当前读事务时,根据当前读事务最近的事务标识及第一预设标识生成规则,确定当前读事务的虚拟标识,其中,当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
步骤120,扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、当前读事务的虚拟标识以及当前读事务的隔离级别,确定该写事务记录是否对当前读事务可见,若该写事务记录对当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
本实施例在处理读事务时,通过给读事务分配虚拟标识的方式能够实现读事务读取到相关数据,并且在数据库故障时数据恢复时,因未对读事务产生读事务记录,因此会提高数据恢复效率。
详细的说,本文所述的读事务仅用于读取数据库中的数据,不会对数据库中的数据进行修改。当前读事务指的是正在处理的事务,当多个线程同时处理事务时,当前读事务可以包括多个。若当前读事务最近的事物为读事务,则当前读事务最近的事务标识指的是最近的历史读事务的虚拟标识,若当前读事务最近的事务为写事务,则当前读事务最近的事务标识指的是最近的历史写事务标识。历史写事务指的是已经处理过的写事务。
读事务的虚拟标识按照第一预设标识生成规则确定,第一预设标识生成规则使得当前读事务的虚拟标识包括当前读事务最近的写事务标识及子标识,子标识具体生成逻辑可根据需求进行设定,例如子标识值逐一递增,或子标识位数逐一递增等。例如最近的历史写事务标识为001,历史读事务的虚拟标识为0011,则当前读事务的虚拟标识为0012。具体实施时,读事务的虚拟标识还包括:读事务进程号以及序列号等内容。
一些实施方式中,所述写事务记录至少包括一条元组记录,如图2所示,每条元组记录至少包括写事务标识210、行标识220、所有列数据230及标记位240;
写事务标识210用于唯一定位写事务,写事务标识由数字组成,按照时间顺序进行编号(例如每一写事务标识相差1),即在后写事务标识大于在前写事务标识。
行标识220用于确定写相关的数据所在的行位置。行标识还可作为元组的编号。
所有列数据230指的是行标识220对应的所有列的值,如更新操作,则为更新后的行对应的所有列数据,如删除操作,则为删除后的行对应的所有列数据。
标记位240用于识别写操作类型,当标记位240标识的为有效(例如为False)时,对应的操作类型为更新操作或新增操作;当标记位240标识的为无效(例如为Ture)时,对应的操作类型为删除操作。
一具体实施例中,元组记录以重做(Redo)日志格式实现,具体如图12所示,包括重做日志头信息、重做日志数据、多个备份块头信息及备份块数据。其中,重做日志头数据中记录有循环冗余校验码、上一个日志记录指针、事务标识、日志记录总长度、标记位、资源管理器数据的总长度等,重做日志数据包括下一个日志记录指针、资源管理器数据的起始位置、缓冲区,备份块头信息包括行标识,备份块数据包括行标识对应的列数据。
本实施例能够记录同一行标识的多次修改记录,每次修改会记录一元组记录,为了便于查找行标识对应的最新修改数据,同一行标识的元祖记录之间通过指针链接,在每一元组中还可记录元组的版本号,版本号能够反映行标识数据对应的修改次数。
具体的,如图3所示,写事务001包括四个新增操作,插入键值分别为(1,‘AAA’),(2,‘BBB’),(3,‘CCC’),(4,‘DDD’),由于是新插入的元组,因此这四个元组的标记位均为False,表示为有效的元组,分别是元组1,2,3,4的第一个版本。
写事务002包括两个更新操作,将键为2的值由‘BBB’更新为‘EEE’,同时将键为3的值由‘CCC’更新为‘FFF’,由于是更新操作,分别添加元组2和3的新的元组(2,‘EEE’)和(3,‘FFF’),并将其删除标记设置为False,此时形成元组2,3的第二个版本。
事务003包括一个删除操作,将键为3的元组删除,因此,添加新的元组(3,‘FFF’)并将其删除标记位设置为True,表示该记录被删除,此时,形成元组3的第三个版本。
其它实施方式中,为了降低写事务记录的大小,进而进一步降低事务日志的大小,所述写事务记录至少包括一条元组记录,如图4所示,每条元组记录:写事务标识310、行标识320、差异数据330、标记位340,其中,差异数据330包括复制项331、删除项332和/或新增项333。
写事务标识310用于唯一定位写事务,写事务标识由数字组成,按照时间顺序进行编号(例如每一写事务标识相差1),即在后写事务标识大于在前写事务标识。
行标识320用于确定写相关的数据所在的行位置。行标识还可作为元组的编号。
标记位340用于识别写操作类型,当所述标记位标识的为有效时,对应的操作类型为更新操作或新增操作;当所述标记位标识的为无效时,对应的操作类型为删除操作。
复制项331用于记录不变数据所占字节,删除项332用于记录删除数据所占字节,新增项333用于记录修改后数据。复制项331、删除项332和/或新增项333按照行标识对应的所有列的顺序排布。
例如一数据表中对应的列数据包括:c1 DATE,c2 INT,c3 VARCHAR(),c4TIMESTAMP,c5 INT,c6 INT。其中,c1占8个字节,c2占4个字节,c3占8个字节,c4占8个字节,c5占4个字节,c6占4个字节。
对该数据表中的某一行数据(‘2021-09-01’,2,‘abcdefghij’,‘2021-09-01 17:35:20’,2,2)进行更新操作,具体的,将c5更新为5。现有技术中生成在事务日志中记录中的修改信息为:‘2021-09-01’,2,‘abcdefghij’,‘2021-09-01 17:35:20’,5,2。而本文中事务日志中记录的修改信息为:COPY 28,IGNORE 4,ADD 4,COPY 4。
本实施例通过在元组记录中记录差异数据,对于未修改的数据通过标识确定(COPY),能够大大降低需要写到元组记录中的字节数,而且表的列数越多,这种压缩更明显。
本文一实施例中,如图5图所示,数据库事务管理方法还包括:
步骤510,处理当前写事务时,根据当前写事务最近的历史写事务标识及第二预设标识生成规则,确定当前写事务标识;
步骤520,将当前写事务相关的数据页写入到内存的数据缓冲区;
步骤530,根据当前写事务,修改数据缓冲区中的数据页,由第一写数据服务将修改后数据页刷新至数据库的数据区中;
步骤540,根据当前写事务标识及修改后数据页,在内存的事务日志缓冲区中构造写事务记录,由第二写数据服务将所述写事务记录刷新至数据库的事务日志中。
详细的说,本实施例实施可与图1所示实施例同步执行,本文对其先后执行顺序不做限定。
步骤510实施时,根据当前写事务最近的历史写事务标识,按照第二预设标识生成规则对其进行更新,更新后得到的值大于当前写事务最近的历史写事务标识,将更新得到的值作为当前写事务标识。第二预设标识生成规则例如为一升序函数(例如每次增加1),将当前写事务最近的历史写事务标识输入至升序函数中,即可得到当前写事务标识。
为了便于在扫描事务日志时确定写事务的开始处理及结束处理,上述步骤510确定出当前写事务标识后,会在内存的事务日志缓冲区中生成开始事务记录,由第三写数据服务将开始事务记录(如图6所示)刷新至数据库的事务日志中。上述步骤540写事务记录刷新至数据库的事务日志中后,在内存的事务日志缓冲区中生成提交事务记录,由第四写数据服务将所述提交事务记录(如图6所示)刷新至数据库的事务日志中。
步骤520实施时,若为更新或删除操作,根据写事务从数据库中获取相关数据页。若为新增操作,则根据写事务构建空的数据页。考虑到事务的并发处理性,为了避免出现操作,步骤520将当前写事务相关的数据页写入到内存的数据缓冲区之后对其增加排他锁,排他锁能够限制其他事务对内存中数据页的写入。
步骤530实施时,将更新后的数据,删除的数据,或新增的数据存储至缓冲区中的数据页。第一写数据服务也可称之为bgwriter服务。为了便于第一写数据服务确定应该将哪些数据页刷新至数据库的事务日志中,在修改完数据缓冲区中的数据页之后,对修改后数据页标记为脏页(dirty page),第一写数据服务将脏页刷新至数据库的数据区中。
步骤540实施时,按照图2或图4所示格式在内存中构造写事务记录中的元组记录。第二写数据服务可称之为WALwriter服务。构造完所述写事务记录之后,释放所述排他锁。
本文所述的第一、第二、第三、第四写数据服务可以为实现同一功能的同一进程或不同进程,本文对此不作限定。
本文一实施例中,第一预设标识生成规则包括第一标识生成子规则及第二标识生成子规则,上述步骤110根据当前读事务最近的事务标识及第一预设标识生成规则,确定当前读事务的虚拟标识包括:
若当前读事务最近的事务为写事务,则根据当前读事务最近的历史写事务标识及第一标识生成子规则,确定当前读事务的虚拟标识;
若当前读事务最近的事务为读事务,则根据当前读事务最近的历史读事务标识及第二标识生成子规则,确定当前写事务的虚拟标识。
详细的说,第一标识生成子规则用于生成子标识并拼接当前读事务最近的写事务标识及子标识,将拼接得到的标识作为当前读事务的虚拟标识。例如,当前读事务最近的写事务标识为003,子标识值为01,则当前读事务的虚拟标识为00301。生成子标识时,可有多种实施方式,本文对此不作限定。
第二标识生成子规则用于对所述当前读事务最近的历史读事务标识进行更新,更新时保持当前读事务最近的历史读事务标识中的写事务标识不变,对当前读事务最近的历史读事务标识中的子标识进行调整,将更新后的标识作为当前读事务的虚拟标识。例如,当前读事务最近的历史读事务标识为11102(其中,111为写事务标识,02为子标识),对子标识更新后得到的标识为11103。子标识调整时可按照逐一递增,或子标识位数逐一递增的方式实施,本文对具体调整方法不做限定。
本文一实施例中,如图7所示,上述步骤120根据该写事务记录中的写事务标识、当前读事务的虚拟标识以及当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,包括:
步骤710,判断该写事务记录中的写事务标识是否小于所述当前读事务的虚拟标识;
步骤720,判断该写事务记录中的元组记录是否为行标识对应的最新记录;若判断结果均为是,则执行步骤730,若判断结果为否,则确定该写事务记录中的元组记录对该读事务不可见;
步骤730,根据当前读事务的隔离级别确定该写事务记录中的元组记录对当前读事务是否可见。
详细的说,因写事务标识及读事务的虚拟标识能够事物处理的时间顺序,且在后生成的标识大于在前生成的标识,因此,通过步骤710能确定出当前读事务之前生成的写事务记录。
通常情况下,数据表中的每一行数据对应多条元组记录,只有最新的元组记录才是最终有效的记录,通过步骤720能够查找到每行数据对应的最新元组记录。
不同的事务配置的隔离级别不同,对应的可见范围也不同,事务的隔离级别可预先确定,本文对此不作限定。通过步骤730能够筛选出对当前读事务可见的元组记录,进而从数据库中读取可见元组记录对应的数据块。
以图3举例来说,在不考虑隔离级别的情况,假设写事务003之后有一读事务0031,因读事务0031晚于写事务0003,则按照显示各元组最高版本值的原则,读事务0031可见的为元组1和4的第1个版本,元组2的第2个版本,以及元组3的第3个版本。假设写事务002之后有一读事务0021,则按照显示各元组最高版本值的原则,读事务0021可见的为元组1和4的第1个版本,元组2和3的第2个版本。
采用上述数据库事务管理方法管理事务后,当数据库发生故障时,事务恢复过程包括:对事务日志中的写事务记录进行正向扫描,对已提交事务及已回滚事务执行重做操作。
本文对于各类写操作均作了记录,因此在进行事务恢复时,仅需通过正向扫描事务记录,即可完成事务恢复。
具体的,若所述写事务记录至少包括:写事务标识、行标识、差异数据、标记位,其中,差异数据包括复制项、删除项和/或新增项,如图8所示,对已提交事务及已回滚事务执行重做操作,包括:
步骤810,对于每一已提交事务和每一已回滚事务,查找该已提交事务以及该已回滚事务中各元组记录对应的第一条元组记录;
步骤820,根据该已提交事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
步骤830,根据该已回滚事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
步骤840,将修改后数据写入到数据库的数据区中。
详细的说,步骤810查找出的第一条元组记录为新增操作插入的数据,其中记录了全量数据,假设某一表中的列向量定义为(c1 DATE,c2 INT,c3 VARCHAR(),c4TIMESTAMP,c5 INT,c6 INT),其中,c1占8个字节,c2占4个字节,c3占8个字节,c4占8个字节,c5占4个字节,c6占4个字节,第一条元组记录中的的数据为(‘2021-09-01’,2,‘abcdefghij’,‘2021-09-01 17:35:20’,2,2),已提交事务中差异数据为(COPY 28,IGNORE 4,5,COPY 4),COPY28对应原数据的c1,c2,c3,c4的数据,IGNORE 4删除的是c5,COPY4对应源数据c6,基于(‘2021-09-01’,2,‘abcdefghij’,‘2021-09-01 17:35:20’,2,2)及(COPY 28,IGNORE 4,5,COPY 4)即可恢复出数据(‘2021-09-01’,2,‘abcdefghij’,‘2021-09-01 17:35:20’,5,2)。基于同一发明构思,本文还提供一种数据库事务管理装置及数据库事务恢复装置,如下面的实施例所述。由于数据库事务管理装置及数据库事务恢复装置解决问题的原理与数据库事务管理方法及数据库事务恢复方法相似,因此,数据库事务管理装置及数据库事务恢复装置的实施可以参见数据库事务管理方法及数据库事务恢复方法,重复之处不再赘述。
具体的,如图9所示,数据库事务管理装置,包括:
读事务处理模块910,用于处理当前读事务时,根据所述当前读事务最近的事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识,其中,当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
扫描模块920,用于扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
进一步的,如图10所示,数据库事务管理装置还包括:
写事务处理模块930,处理当前写事务时,根据当前写事务最近的历史写事务标识及第二预设标识生成规则,确定当前写事务标识;将当前写事务相关的数据页写入到内存的数据缓冲区;根据当前写事务,修改数据缓冲区中的数据页,由写数据服务将修改后数据页刷新至数据库的数据区中;根据当前写事务标识及修改后数据页,在内存的事务日志缓冲区中构造写事务记录,由写数据服务将所述写事务记录刷新至数据库的事务日志中。
本实施例通过只针对写事务生成写事务标识(即实际的事务标识),对读事务不生成实际事务标识,而是生成虚拟标识,且读事务不会产生日志记录,从而能够减少恢复时所扫描日志长度,从而可以大大提高恢复的效率,同时降低事务标识不够用而需要绕回(wraparound)的问题。
如图11所示,数据库事务恢复装置,包括:
扫描模块1110,用于当系统发生故障时,对事务日志中的写事务记录进行正向扫描,确定已提交的事务及已回滚的事务;
重做模块1120,用于对已提交的事务及已回滚的事务执行重做操作,其中,所述写事务记录中的元组采用图2及图4所述的示意图记录。
本文一实施例中,还提供计算机设备,用于执行上述任一方法实施例的步骤。如图13所示,计算机设备1302可以包括一个或多个处理器1304,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备1302还可以包括任何存储器1306,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器1306可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备1302的固定或可移除部件。在一种情况下,当处理器1304执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备1302可以执行相关联指令的任一操作。计算机设备1302还包括用于与任何存储器交互的一个或多个驱动机构1308,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备1302还可以包括输入/输出模块1310(I/O),其用于接收各种输入(经由输入设备1312)和用于提供各种输出(经由输出设备1314))。一个具体输出机构可以包括呈现设备1316和相关联的图形用户接口1318(GUI)。在其他实施例中,还可以不包括输入/输出模块1310(I/O)、输入设备1312以及输出设备1314,仅作为网络中的一台计算机设备。计算机设备1302还可以包括一个或多个网络接口1320,其用于经由一个或多个通信链路1322与其他设备交换数据。一个或多个通信总线1324将上文所描述的部件耦合在一起。
通信链路1322可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1322可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
对应于图1、图5、图7、图8中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本文实施例还提供一种计算机可读程序,其中当计算机中的处理器执行所述程序时,其中的程序使得处理器执行如图1、图5、图7、图8所示的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。

Claims (18)

1.一种数据库事务管理方法,其特征在于,包括:
处理当前读事务时,根据所述当前读事务最近的历史事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识,其中,所述当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
2.如权利要求1所述的数据库事务管理方法,其特征在于,还包括:
处理当前写事务时,根据所述当前写事务最近的历史写事务标识及第二预设标识生成规则,确定所述当前写事务标识;
将所述当前写事务相关的数据页写入到内存的数据缓冲区;
根据所述当前写事务,修改所述数据缓冲区中的数据页,由第一写数据服务将修改后数据页刷新至数据库的数据区中;
根据所述当前写事务标识及修改后数据页,在内存的事务日志缓冲区中构造写事务记录,由第二写数据服务将所述写事务记录刷新至数据库的事务日志中。
3.如权利要求2所述的数据库事务管理方法,其特征在于,确定所述当前写事务标识之后,在内存的事务日志缓冲区中生成开始事务记录,由第三写数据服务将所述开始事务记录刷新至数据库的事务日志中;
所述写事务记录刷新至数据库的事务日志中后,在内存的事务日志缓冲区中生成提交事务记录,由第四写数据服务将所述提交事务记录刷新至数据库的事务日志中。
4.如权利要求2所述的数据库事务管理方法,其特征在于,所述写事务记录至少包括一条元组记录,每条元组记录至少包括写事务标识、行标识、所有列数据及标记位;
所述标记位用于识别写操作类型,当所述标记位标识的为有效时,对应的操作类型为更新操作或新增操作;当所述标记位标识的为无效时,对应的操作类型为删除操作。
5.如权利要求2所述的数据库事务管理方法,其特征在于,所述写事务记录至少包括一条元组记录,每条元组记录:写事务标识、行标识、差异数据、标记位,其中,差异数据包括复制项、删除项和/或新增项;
所述标记位用于识别写操作类型,当所述标记位标识的为有效时,对应的操作类型为更新操作或新增操作;当所述标记位标识的为无效时,对应的操作类型为删除操作;
所述复制项用于记录不变数据所占字节,所述删除项用于记录删除数据所占字节,所述新增项用于记录修改后数据;
所述复制项、删除项和/或新增项按照所述行标识对应的所有列的顺序排布。
6.如权利要求4或5所述的数据库事务管理方法,其特征在于,同一行标识的元组记录之间通过指针链接。
7.如权利要求2所述的数据库事务管理方法,其特征在于,将所述当前写事务相关的数据页写入到内存的数据缓冲区之后对其增加排他锁;
构造完所述写事务记录之后,释放所述排他锁。
8.如权利要求1所述的数据库事务管理方法,其特征在于,所述第一预设标识生成规则包括第一标识生成子规则及第二标识生成子规则;
根据所述当前读事务最近的历史事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识包括:
若所述当前读事务最近的历史事务为写事务,则根据所述当前读事务最近的历史写事务标识及第一标识生成子规则,确定所述当前读事务的虚拟标识;
若所述当前读事务最近的历史事务为读事务,则根据所述当前读事务最近的历史读事务标识及第二标识生成子规则,确定所述当前写事务的虚拟标识。
9.如权利要求8所述的数据库事务管理方法,其特征在于,根据所述当前读事务最近的历史写事务标识及第一标识生成子规则,确定所述当前读事务的虚拟标识,包括:
利用第一标识生成子规则,生成子标识并拼接所述当前读事务最近的历史写事务标识及子标识;
将拼接得到的标识作为所述当前读事务的虚拟标识。
10.如权利要求8所述的数据库事务管理方法,其特征在于,根据所述当前读事务最近的历史读事务标识及第二标识生成子规则,确定所述当前写事务的虚拟标识,包括:
利用第二标识生成子规则,对所述当前读事务最近的历史读事务标识进行更新,更新时保持当前读事务最近的历史读事务标识中的写事务标识不变,对当前读事务最近的历史读事务标识中的子标识进行调整;
将更新后的标识作为所述当前读事务的虚拟标识。
11.如权利要求6所述的数据库事务管理方法,其特征在于,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,包括:
判断该写事务记录中的写事务标识是否小于所述当前读事务的虚拟标识;
判断该写事务记录中的元组记录是否为行标识对应的最新记录;
若判断结果均为是,则根据所述当前读事务的隔离级别确定该写事务记录中的元组记录对所述当前读事务是否可见;
若判断结果为否,则确定该写事务记录中的元组记录对该读事务不可见。
12.一种数据库事务恢复方法,其特征在于,采用权利要求2所述的方法记录事务日志,数据库发生故障事务恢复过程包括:
对事务日志中的写事务记录进行正向扫描,对已提交事务及已回滚事务执行重做操作。
13.如权利要求12所述的数据库事务恢复方法,其特征在于,若所述写事务记录至少包括:写事务标识、行标识、差异数据、标记位,其中,差异数据包括复制项、删除项和/或新增项,对已提交事务及已回滚事务执行重做操作,包括:
对于每一已提交事务和每一已回滚事务,查找该已提交事务以及该已回滚事务中各元组记录对应的第一条元组记录;
根据该已提交事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
根据该已回滚事务中各元组记录及其对应的第一条元组记录,恢复修改后数据;
将修改后数据写入到数据库的数据区中。
14.一种数据库事务管理装置,其特征在于,包括:
读事务处理模块,用于处理当前读事务时,根据所述当前读事务最近的历史事务标识及第一预设标识生成规则,确定所述当前读事务的虚拟标识,所述当前读事务的虚拟标识中包括所述当前读事务最近的写事务标识及子标识;
扫描模块,用于扫描事务日志中的每一写事务记录,根据该写事务记录中的写事务标识、所述当前读事务的虚拟标识以及所述当前读事务的隔离级别,确定该写事务记录是否对所述当前读事务可见,若该写事务记录对所述当前读事务可见,则从数据库中读取该写事务记录对应的数据块。
15.一种数据库事务恢复装置,其特征在于,包括:
扫描模块,用于当系统发生故障时,对事务日志中的写事务记录进行正向扫描,对已提交的事务及已回滚的事务执行重做操作,其中,所述写事务记录采用权利要求2所述的方法记录。
16.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述计算机程序被所述处理器运行时,执行根据权利要求1-11任意一项所述方法的指令。
17.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器运行时,执行根据权利要求1-11任意一项所述方法的指令。
18.一种计算机可读程序,其特征在于,当计算机中的处理器执行所述程序时,所述程序执行权利要求1至11的任一项所述方法的指令。
CN202111255065.7A 2021-10-27 2021-10-27 一种数据库事务管理方法及装置、恢复方法及装置 Pending CN113986974A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111255065.7A CN113986974A (zh) 2021-10-27 2021-10-27 一种数据库事务管理方法及装置、恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111255065.7A CN113986974A (zh) 2021-10-27 2021-10-27 一种数据库事务管理方法及装置、恢复方法及装置

Publications (1)

Publication Number Publication Date
CN113986974A true CN113986974A (zh) 2022-01-28

Family

ID=79742469

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111255065.7A Pending CN113986974A (zh) 2021-10-27 2021-10-27 一种数据库事务管理方法及装置、恢复方法及装置

Country Status (1)

Country Link
CN (1) CN113986974A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302845A (zh) * 2023-05-17 2023-06-23 建信金融科技有限责任公司 事务运行方式的确定方法、装置、电子设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302845A (zh) * 2023-05-17 2023-06-23 建信金融科技有限责任公司 事务运行方式的确定方法、装置、电子设备及存储介质
CN116302845B (zh) * 2023-05-17 2023-08-15 建信金融科技有限责任公司 事务运行方式的确定方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
KR100862661B1 (ko) 지연된 로깅 방법 및 그 장치
US9953051B2 (en) Multi-version concurrency control method in database and database system
US7552150B2 (en) Reason-based database changes
US9672244B2 (en) Efficient undo-processing during data redistribution
EP0501180A2 (en) Dynamic, finite versioning for concurrent transaction and query processing
CN109753382B (zh) 一种数据库删除记录的恢复方法及系统
JP4806168B2 (ja) テーブルに対して行われる変更を識別する識別方法及びそのシステム
US7941451B1 (en) Dynamic preconditioning of a B+ tree
CN105786595B (zh) 一种两段式提交的事务控制方法
US20160321144A1 (en) Database rollback using wal
CN106371953A (zh) 紧凑二进制事件日志生成
US7653663B1 (en) Guaranteeing the authenticity of the data stored in the archive storage
CN110825546A (zh) 一种面向高可用数据库集群的恢复方法、系统及设备终端
CN109101368B (zh) 一种数据处理方法及装置
CN113986974A (zh) 一种数据库事务管理方法及装置、恢复方法及装置
CN111143323A (zh) Mpp数据库管理方法、装置及系统
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
JP4126843B2 (ja) データ管理方法および装置並びにデータ管理プログラムを格納した記録媒体
US7051051B1 (en) Recovering from failed operations in a database system
CN106997305B (zh) 一种事务处理方法与装置
KR101946135B1 (ko) 비휘발성 메모리를 이용하는 데이터베이스 관리 시스템 및 방법
JP4152107B2 (ja) データベース更新情報の反映システムおよびそのためのプログラム
JPS62245348A (ja) データベース更新方法
US8195604B2 (en) System and method for verifying IMS databases on a mainframe computer
JP5240086B2 (ja) データ管理プログラム

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