数据库系统中事务恢复的方法与数据库管理系统的制作方法

文档序号:10570065阅读:283来源:国知局
数据库系统中事务恢复的方法与数据库管理系统的制作方法
【专利摘要】本发明公开了一种数据库系统中事务恢复的方法与数据库管理系统,数据库系统的存储设备支持写时复制。该方法包括:确定数据库系统中待恢复的事务,该待恢复事务未提交,待恢复事务对数据库系统中的数据执行了更新操作;从用于记录待恢复事务对数据执行更新操作的更新操作日志中,获取数据的旧值在存储设备中的物理地址,旧值为数据在更新操作之前的值;利用旧值的物理地址替换数据的新值的物理地址,并将新值的物理地址置为无效,以使得数据的逻辑地址指向旧值的物理地址,新值为数据在更新操作之后的值。相对于传统技术,本发明在事务恢复时,能有效减少写操作,进而减少存储设备的擦除操作,从而能够延长存储设备的寿命。
【专利说明】
数据库系统中事务恢复的方法与数据库管理系统
技术领域
[0001] 本发明涉及数据库技术领域,并且更具体地,涉及一种数据库系统中事务恢复的 方法与数据库管理系统。
【背景技术】
[0002] 事务(Transaction)是数据库系统中由用户定义的一个数据库操作序列,这些操 作要么全部执行要么全不执行,是一个不可分割的工作单位。例如在关系数据库中,一个事 务可以是一条结构化查询语言(Structured Query Language,SQL)语句、一组SQL语句或整 个程序。在SQL中,定义事务的语句有3条:BEGIN TRANSACTION(事务开始)、COMMIT(事务提 交)、ROLLBACK (事务回滚)。
[0003] 事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提 交,即提交事务的所有操作,具体地说,是将事务中所有对数据库的更新写到磁盘上,事务 正常结束。ROLLBACK表示回滚,即在事务运行的过程中发生某种故障,事务不能继续执行, 系统将事务中对数据库的所有已完成的操作全部撤销(UNDO),回滚到事务开始时的状态。 [0004] 事务具有四个特性:原子性(Atomic)、一致性(Consistency)、隔离性(Isolation) 和持久性(Durability)。原子性指的是,事务是数据库的逻辑工作单位,一个事务中包括的 操作序列要么都做,要么都不做。一致性指的是,事务执行的结果必须是使数据库从一个一 致性状态变到另一个一致性状态。当数据库只包含成功事务提交的结果时,就说数据库处 于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完 成事务对数据库所在的修改有一部分已经写入磁盘,这时数据库就处于一种不正确的状 态,或者说是不一致的状态。隔离性指的是,一个事务的执行不能被其他事务干扰。持久性 指的是,一个事务一旦提交(COMMIT),该事务对数据库中数据的改变就应该是永久性的,接 下来的其他操作或者故障不应该对其执行结果有任何影响。这四个特性简称为ACID特性。 [0005] 由数据库管理系统(database management system,DBMS)负责事务的处理,保证 事务的ACID特性是DBMS的重要任务。一旦事务的ACID特性遭到破坏,即数据库出现错误状 态,DBMS必须具有把数据库从错误状态恢复到某一正确状态(或称为一致性状态)的功能, 这个过程就是数据库恢复。
[0006]日志文件在数据库恢复中起着非常重要的作用。日志文件是用来记录事务对数据 库的更新操作的文件,也可称为事务日志。日志文件中需要登记的内容包括:事务的开始 (BEGIN TRANSACTION)标记;事务的结束(COMMIT或ROLLBACK)标记;事务的所有更新操作。 具体地,事务对数据库的更新操作包括插入操作、删除操作或修改操作。事务的开始标记、 结束标记和每个更新标记均作为日志文件中的一个日志记录(Log Record)。每个日志记录 的内容主要包括:事务标识(标明是哪个事务);更新前数据的旧值(对于插入操作而言,此 项为空项);更新后数据的新值(对于删除操作而言,此项为空项)。
[0007]为保证数据库是可恢复的,登记日志文件必须遵循"先写日志文件"(Write-Ahead Logging,WAL)的原则:事务的日志记录的次序严格按事务执行的时间次序;必须先写日志 文件到磁盘,后写更新数据到磁盘。
[0008] 当数据库系统运行过程中发生事务故障或者系统故障,DBMS利用日志文件将数据 库恢复到故障发生之前的某一个一致性状态。
[0009] 事务故障是指事务在运行至正常结束点之前被终止,这时利用日志文件撤销 (UNDO)该事务已经对数据库进行的更新,即实现数据库恢复。撤销(UNDO)处理的基本步骤 为:(1)反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。(2)对该 事务的更新操作执行逆操作,即将日志记录中"更新前数据的旧值"写入物理数据库(即磁 盘)。应理解,如果日志记录中为插入操作,则该逆操作相当于删除操作,因为"更新前数据 的旧值"为空;若日志记录中是删除操作,则该逆操作相当于为插入操作;若日志记录中为 修改操作,则该逆操作相当于利用"更新前数据的旧值"替换"更新后数据的新值"。(3)继续 反向扫描日志文件,查找该事务的更新操作,重复步骤(2)的处理,直至扫描到该事务的开 始标记(BEGIN TRANSACTION)为止,该事务的事务故障恢复就完成了。
[0010] 系统故障造成数据库不一致状态的原因有两个,一是在故障发生前,未完成事务 对数据库的更新可能已经写入磁盘,二是在故障发生前,已提交事务对数据库的更新可能 还留在缓存区没来得及写入磁盘。因此,针对系统故障的恢复操作就是要撤销故障发生时 未完成的事务,重做已完成的事务。系统故障的恢复步骤大致为:(1)正向扫描日志文件(即 从头扫描日志文件),找出在故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION日志记录,又有COMMIT日志记录),将其事务标识记入重做(REDO)队列。同时找 出故障发生前尚未完成的事务(这些事务只有BEGIN TRANSACTION日志记录,没有相应的 COMMIT日志记录),将其事务标识记入撤销(UNDO)队列。(2)对撤销队列中的各个事务进行 撤销(UNDO)处理,与针对事务故障的恢复步骤类似,反向扫描日志文件,对每个UNDO事务的 更新操作执行逆操作,即将UNDO事务的日志记录中的"更新前数据的旧值"写入磁盘。(3)对 重做队列中的各个事务进行重做(REDO)处理。正向扫描日志文件,对每个REDO事务重新执 行日志文件登记的操作,即将日志记录中的"更新后的数据的新值"写入磁盘。
[0011] 数据库中的数据存储在数据库系统的存储设备(例如磁盘)中,数据库系统的运行 离不开对存储设备的读、写操作。以闪存作为存储介质的固态硬盘(Solid State Disk, SSD)是一种新型存储设备,闪存并没有像磁头一样的机械部件,其随机访问模式和顺序访 问模式的开销是相当的,因此,SSD比传统磁盘具有更大的性能优势。当前技术也希望采用 SSD作为数据库系统的存储设备。
[0012] 由于SSD具有先擦除才能再写入的特性,并且SSD的寿命是按擦除次数计算的,当 前的SSD均支持写时复制(Copy On Write,C0W)特性,即当要更新SSD中已经存储的数据时, 将数据的新值写入空闲的存储空间中,而非直接将数据的旧值擦除之后在原地覆盖。
[0013] 将SSD作为数据库系统的存储设备,能够提高数据库系统的数据存储性能。但是由 于SSD的写时复制特性,现有的事务撤销(UNDO)操作会产生不必要的写操作。例如,在数据 库恢复过程中,对事务进行撤销(UNDO)处理,相当于是对该事务的更新操作执行逆操作,即 将日志记录中"更新前数据的旧值"写入磁盘。由于SSD的写时复制特性,会在事务进行撤销 (UNDO)处理的过程中将"更新前数据的旧值"写入空闲的存储空间,但是,该"更新前数据的 旧值"可能在事务恢复时还依然存储在一个存储空间中。例如,事务对数据库的更新操作为 修改操作,则在该事务对数据库进行更新操作之前,"更新前数据的旧值"是存储在一个存 储空间中的。假设发生事务故障需要利用日志文件撤销(UNDO)该事务已经对数据库进行的 更新,并且该事务已经将数据更新为新值,相当于对该事务的更新操作执行逆操作,将日志 记录中"更新前数据的旧值"写入磁盘,即将该"更新前数据的旧值"写入空闲的存储空间 中。这时,该同一个"更新前数据的旧值"占用了两个存储空间,可以认为事务撤销(UNDO)处 理产生一次额外的、不必要的写操作,这在SSD中是不希望看到的,因为,当需要执行撤销 (UNDO)处理的事务较多时,会在SSD中产生大量额外的、不必要的写操作,这些额外的写操 作可能会带来一些不必要的擦除操作,从而缩短SSD的寿命。
[0014] 上述可知,当以SSD等支持写时复制(Copy On Write,C0W)特性的存储设备作为数 据库系统的存储设备时,在恢复事务时会产生不必要的写操作,进而引起不必要的擦除操 作,影响存储设备的寿命。

【发明内容】

[0015] 本发明提供一种数据库系统中事务恢复的方法与数据库管理系统,能够在事务恢 复时,有效减少写操作,从而减少对数据库系统的存储设备的损耗,延长存储设备的使用寿 命。
[0016] 第一方面,提供了一种数据库系统中事务恢复的方法,所述数据库系统的存储设 备支持写时复制特性,所述方法包括:确定所述数据库系统中待恢复的事务,所述待恢复事 务未提交,所述待恢复事务对所述数据库系统中的数据执行了更新操作;从用于记录所述 待恢复事务对所述数据执行所述更新操作的更新操作日志中,获取所述数据的旧值在所述 存储设备中的物理地址,所述旧值为所述数据在所述更新操作之前的值;利用所述旧值在 所述存储设备中的物理地址替换所述数据的新值在所述存储设备中的物理地址,并将所述 新值在所述存储设备中的物理地址置为无效,以使得所述数据的逻辑地址指向所述旧值在 所述存储设备中的物理地址,所述新值为所述数据在所述更新操作之后的值。
[0017] 在本发明实施例中,恢复事务时,通过利用数据的旧值的物理地址替换所述数据 的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理地址,使得所述数 据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事务恢复时,能够有 效减少写操作,在存储设备为SSD的情况下,进而能够减少SSD的擦除操作,从而能够延长 SSD的寿命。另外,由于减少了与操作,因此也能够有效提尚事务恢复的效率。
[0018] 结合第一方面,在第一方面的第一种可能的实现方式中,在所述确定所述数据库 系统中待恢复的事务之前,所述方法还包括:根据所述待恢复事务对所述数据执行的所述 更新操作,生成所述更新操作日志,所述更新操作日志包括:事务标识、操作对象与历史地 址,所述事务标识用于指示所述待恢复事务,所述操作对象用于指示所述待恢复事务所操 作的所述数据,所述历史地址用于指示所述旧值在所述存储设备中的物理地址;在将所述 新值写入所述存储设备之前,将所述更新操作日志写入所述存储设备中。
[0019] 在本发明实施例中,通过在记录事务对数据执行更新操作的日志记录中记录数据 的旧值在存储设备中的物理地址,在事务恢复时,根据该日志记录,利用该数据的旧值的物 理地址替换该数据的新值在存储设备中的物理地址,将数据库数据恢复到事务执行之前的 状态,即实现了事务恢复。相对于传统技术,本发明实施例在事务恢复时,能够有效减少写 操作,在存储设备为SSD的情况下,进而能够减少SSD的擦除操作,从而能够延长SSD的寿命。 另外,由于减少了写操作,因此也能够有效提高事务恢复的效率。
[0020] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的 实现方式中,所述存储设备为基于闪存作为存储介质的固态硬盘,所述存储设备的闪存转 换层的逻辑地址LBA与物理地址PBA的映射表中存储有所述旧值在所述存储设备中的物理 地址。
[0021] 结合第一方面或第一方面的第一种或第二种可能的实现方式,在第一方面的第三 种可能的实现方式中,所述更新操作为插入操作,所述旧值以及所述旧值在所述存储设备 中的物理地址为空值;或所述更新操作为删除操作,所述新值以及所述新值在所述存储设 备中的物理地址为空值。
[0022] 在上述各个实现方式中,数据库系统的存储设备指的是硬盘或磁盘,而非内存。
[0023] 在上述各个实现方式中,数据库系统的存储设备为支持写时复制特征的存储设 备,包括但不限于固态硬盘(SSD)或文件系统等。本文的有些地方描述为将数据或日志记录 写入磁盘,该磁盘对应于该存储设备。
[0024] 在上述各个实现方式中,事务的更新操作包括以下几种操作:
[0025] 1)修改操作,指的是,所述事务修改数据库中原本存在的数据,将所述数据由旧值 修改为新值。这种情形下,所述数据的旧值与新值均为实际的数据值,且所述旧值与新值在 数据库系统的存储设备都具有对应的物理地址。
[0026] 2)插入操作,指的是,所述事务在数据库中插入数据。这种情形下,所述数据的旧 值及其物理地址均为空值,因此,在所述插入操作的日志记录中,用于记录所述数据的旧值 的物理地址的项为空项。
[0027] 3)删除操作,指的是,所述事务删除数据库中的数据。这种情形下,所述数据的新 值及其物理地址均为空值。
[0028]第二方面提供了一种数据库管理系统,所述数据库管理系统所属的数据库系统的 存储设备支持写时复制特性,所述数据库管理系统用于执行上述第一方面或第一方面的任 一方面的可能实现方式中的方法。
[0029]具体地,所述数据库管理系统可以包括用于执行第一方面或第一方面的任一可能 的实现方式中的方法的模块。
[0030]第三方面提供了一种数据库管理系统,所述数据库管理系统所属的数据库系统的 存储设备支持写时复制特性,所述数据库管理系统包括内存(Memory)和处理器,该内存用 于存储指令,该处理器用于执行该内存存储的指令,并且对该内存中存储的指令的执行使 得该处理器执行第一方面或第一方面的任一方面的可能实现方式中的方法。
[0031]基于上述技术方案,在本发明实施例中,恢复事务时,通过利用数据的旧值的物理 地址替换所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理 地址,使得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事 务恢复时,能够有效减少写操作。在存储设备为SSD的情况下,进而能够减少SSD的擦除操 作,从而能够延长SSD的寿命。另外,由于减少了写操作,因此也能够有效提高事务恢复的效 率。
【附图说明】
[0032] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附 图获得其他的附图。
[0033] 图la-c示出了根据本发明实施例提供的数据库系统的示意图。
[0034] 图2示出了根据本发明实施例提供的数据库系统中事务恢复的方法的示意性流程 图。
[0035] 图3示出了根据本发明实施例提供的生成事务日志的方法的示意性流程图。
[0036] 图4示出了根据本发明实施例提供的回收事务日志的方法的示意性流程图。
[0037] 图5示出了根据本发明实施例提供的方法进行事务恢复的实验结果的示意图。
[0038] 图6示出了根据本发明实施例提供的方法进行事务恢复的实验结果的另一示意 图。
[0039] 图7示出了根据本发明实施例提供的数据库管理系统的示意性框图。
[0040] 图8示出了根据本发明实施例提供的数据库管理系统的另一示意性框图。
[0041 ]图9示出了根据本发明实施例提供的数据库管理系统的再一示意性框图。
【具体实施方式】
[0042]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发 明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0043]本发明实施例的数据库系统中事务恢复的方法与数据库管理系统可以应用于单 机、集群或者双机备份等数据库系统。数据库系统(Database System)是为适应数据处理的 需要而发展起来的一种较为理想的数据处理系统。数据库系统一般由以下三部分组成:(1) 数据库(database,DB),指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中 的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展 性,并可为各种用户共享。(2)硬件,包括存储数据所需的存储设备,例如内存和/或磁盘。 (3)软件,包括数据库管理系统(database management system,DBMS),DBMS是数据库系统 的核心软件,是用于科学地组织和存储数据,以及高效获取和维护数据的系统软件,数据库 弓丨擎是DBMS的核心内容。
[0044]具体地,如图1所示,图la为单机数据库系统示意图,包括一个数据库管理系统和 存储设备,该数据库管理系统用于提供数据库的查询和修改等服务,该数据库管理系统将 数据存储到存储设备中。图lb为集群数据库系统示意图,包括多个数据库管理系统,分别为 用户提供数据库的查询和修改等服务,该多个数据库管理系统存储有共享的数据在存储设 备中,并且通过存储区网络(Storage Area Network,SAN)交换机对存储设备中的数据执行 读写操作。图lc为双机备份数据库系统示意图,包括2个数据库管理系统,其中一个为主机, 另一个为备机,主机和备机通过交换机相连接,并分别存储数据到各自对应的存储设备上, 而且保持主机和备机存储的数据同步,以便在主机故障时根据备机进行恢复。图1中未示出 数据库,应理解,数据库存储在存储设备中。
[0045] 在本发明实施例中,数据库系统的存储设备为支持写时复制(COW)特征的存储设 备,包括但不限于固态硬盘(SSD)或文件系统等。
[0046] 为了便于理解和描述,作为示例而非限定,下面以数据库系统的存储设备为SSD为 例进行说明。但是本领域技术人员根据本发明实施例的教导可以很清楚地理解,本发明实 施例的方法同样可以应用于数据库系统的存储设备为其他具有写时复制(C0W)特征的存储 设备(例如文件系统)的场景,这样的应用均落入本发明的保护范围内。
[0047] 为了便于理解本发明实施例,下面结合表1以基于闪存作为存储介质的SSD为例介 绍一下写时复制(C0W)特性。
[0048] 表1中的LBA指的是逻辑区块地址(Logical Block Address),是描述SSD上数据所 在区块的通用机制,LBA也可简称为逻辑地址,如表1中所示的页pageO。表1中的指的是 物理区块地址(Physical Block Address),也可简称为物理地址,如表1中所示的物理地址 11、11+1、11+2。由于闪存具有先擦除才能再写入、读/写操作以页为单位,擦除操作以块(包括 多个页)为单位的特性,导致SSD的LBA与PBA的映射关系不是固定不变的,因此,需要闪存转 换层(Flash translation layer,FTL)来负责LBA与PBA之间的转换。FTL算法就是一种LBA 到PBA的映射关系。在SSD中,FTL利用LBA与PBA的映射表来管理闪存,当闪存中的数据需要 更新时,FTL将该数据更新后的新值写入空白的闪存空间(对应于新的PBA),然后更新该数 据的LBA与PBA的映射关系,将该数据的LBA指向新的PBA。以一个具体例子进行说明,假设初 始在闪存中写入数据,该数据的逻辑地址为表1中所示的pageO,该数据的物理地址为表1中 的物理地址为n,这时,该数据的LBA与PBA的映射关系为pageO指向物理地址n(如表1第三行 所示表项)。接着该数据需要被更新,由于SSD的C0W特性,该数据更新后的新值会被写入其 他空白的闪存空间中,假设写入新值的闪存空间对应的物理地址为表1中所示的物理地址 (n+1),FTL更新该数据的LBA与PBA的映射关系为:page0指向物理地址(n+1),这样,就实现 了对该数据的更新(即该数据的赋值为新值)。
[0049] 表 1
[0051]假设数据库包括数据X,该数据X的逻辑地址LBA为表2中第三行所示的pageO,该数 据X在SSD中的物理地址PBA为表2中第三行所示的n,该数据X的赋值为a,a存储在物理地址n 对应的闪存空间中,该数据X的LBA与PBA之间的映射关系为pageO指向物理地址n。假设事务 T对数据库中的该数据对丸行修改操作,将数据X由旧值a修改为新值b。由于SSD的写时复制 特性,该数据X的新值b被写入空白的闪存空间,假设写入新值b的闪存空间对应的物理地址 为表2中第4行所示的物理地址(n+1),这时,FTL更新该数据X的LBA与PBA的映射关系为: pageO指向物理地址(n+1),则该数据X被修改为新值b。假设系统发生故障,在故障发生之 前,该事务T未成功提交,则需要对该事务T进行撤销(UNDO)处理。
[0052]在传统数据库恢复技术中,用于描绘事务T的修改操作的日记记录包括以下内容: "该事务T的事务标识"、"该事务T的操作对象X"、"更新前数据的旧值a"、"更新后数据的新 值b"。在对该事务T进行UNDO处理时,相当于是对该事务T的修改操作执行逆操作,即将数据 X修改为日志记录中的"更新前数据的旧值a"。由于SSD的写时复制特性,该"更新前数据的 旧值a"被写入空白的闪存空间,假设写入该"更新前数据的旧值a"的闪存空间对应的物理 地址为表2中第5行所示的物理地址(n+2),这时,FTL更新该数据X的LBA与的映射关系 为:pageO指向物理地址(n+2),则该数据X又恢复为旧值a。这时,通过撤销(UNDO)处理,将数 据库数据)(恢复到被事务T修改之前的状态。
[0053]但是从表2可以看出,数据X的同一个赋值"a"分别写入闪存中的两个存储空间。将 "更新前数据的旧值a"写入物理地址(n+2)对应的闪存空间的写操作,是一个不必要的写操 作,这在闪存中是不希望看到的。
[0054]如果需要执行撤销(UNDO)处理的事务较多,则会大量出现如表2中第5行所示的不 必要的写操作,大量不必要的写操作可能会带来不必要的擦除操作,导致缩短闪存的寿命, 进而缩短SSD的寿命。
[0055] 此外,在传统数据库恢复技术中,在使用SSD作为存储设备的情形下,通常必须要 通过执行写操作才能完成事务的撤销(UNDO)处理,也降低了事务恢复的效率。
[0056] 表2
[0058]针对上述问题,本发明实施例提出一种数据库系统中事务恢复的方法与数据库管 理系统,在数据库系统的存储设备为支持写时复制特性的存储设备(例如SSD)的情形下,能 够在对事务执行撤销(UNDO)处理时,有效减少写操作,从而减少存储设备的擦除操作,能够 延长存储设备的寿命。
[0059] 如图2所示,本发明实施例提供了一种数据库系统中事务恢复的方法100,该数据 库系统的存储设备支持写时复制特性,该方法100的执行主体可以为数据库系统的数据库 管理系统,该方法100包括:
[0060] S110,反向扫描日志文件,即从日志文件的尾部向前扫描日志记录。
[0061 ] S120,在扫描过程中,判断事务T是否提交,若是,转到S130,若否,转到S140。
[0062]具体地,在扫描日志文件过程中,查找该事务T是否有提交(Commit)日志记录,若 有,则认为该事务T成功提交,若没有,则认为该事务T未提交,但是该事务T对数据库的更新 操作可能已经写入磁盘,这时需要对该事务T进行撤销(UNDO)处理,以将数据库恢复到该事 务T未执行之前的状态。
[0063] S130,跳过,不做处理。
[0064] S140,确定事务T未提交,恢复该事务T,假设该事务T对数据库中数据执行了更新 操作。从用于记录该待恢复事务T对该数据执行该更新操作的更新操作日志中,获取该数据 的旧值在该存储设备中的物理地址,该旧值为该数据在该更新操作之前的值,该更新操作 日志中包括该旧值在该存储设备中的物理地址。
[0065] S150,利用该旧值在该存储设备中的物理地址替换该数据的新值在该存储设备中 的物理地址,并将该新值在该存储设备中的物理地址置为无效,以使得该数据的逻辑地址 指向该旧值在该存储设备中的物理地址,该新值为该数据在该更新操作之后的值。
[0066] S160,判断日志文件扫描是否完毕,若是,转到S170,若否,转到S120。
[0067] S170,结束事务恢复过程。
[0068] 应理解,通常在闪存中,读操作的速度较快,写操作的速度略慢,擦除操作的速度 最慢,在基于闪存的数据结构中,应当尽量减少写操作和擦除操作。在本发明实施例中,在 事务恢复时,利用数据的旧值的物理地址替换数据的新值的物理地址,能够减少写操作,进 而能够减少闪存的擦除操作,从而能够延长闪存的寿命。
[0069] 因此,相对于传统技术,本发明实施例在事务恢复时,能够有效减少写操作,在存 储设备为SSD的情况下,进而能够减少闪存的擦除操作,从而能够延长闪存的寿命。另外,由 于减少了写操作,因此也能够有效提高事务恢复的效率。
[0070] 应理解,本发明实施例的方法可以应用于事务故障恢复的场景,也可应用于数据 库系统故障恢复中的撤销(UNDO)处理的场景。
[0071] 不同于现有技术的在用于描述事务对数据进行更新操作日志记录中记录数据的 旧值,在本发明实施例中,在用于记录事务对数据进行更新操作的日志记录中记录有旧值 在存储设备中的物理地址。
[0072] 可选地,在本发明实施例中,在扫描所述日志文件之前,所述方法100还包括:
[0073] 根据该待恢复事务对该数据执行的该更新操作,生成该更新操作日志,该更新操 作日志包括:事务标识、操作对象与历史地址,该事务标识用于指示该待恢复事务,该操作 对象用于指示该待恢复事务所操作的该数据,该历史地址用于指示该旧值在该存储设备中 的物理地址;在将该新值写入该存储设备之前,将该更新操作日志写入该存储设备中。
[0074] 具体地,图3示出了根据本发明实施例提供的数据库系统中生成事务日志的方法 200的示意性流程图,该数据库系统的存储设备支持写时复制特性,该方法200的执行主体 可以为数据库管理系统,该方法200包括:
[0075] S210,开始一个事务T。
[0076] S220,执行该事务T,对数据库中的数据进行修改操作,具体地,将数据X的旧值修 改为新值。
[0077] S230,生成一条用于记录该事务T修改数据X的日志记录,该日志记录包括事务标 识、操作对象与历史地址,该事务标识用于标识该事务T,该操作对象用于指示该事务所操 作的数据X,该历史地址用于指示该数据X的旧值在存储设备中的物理地址,该日志记录还 可以包括该数据X的新值。其中,该数据X的旧值表示该数据X在被该事务T修改之前的值,该 数据X的新值表示该数据X在被该事务T修改之后的值。
[0078] S240,将S230中生成的日志记录写入磁盘(即数据库系统的存储设备SSD)。
[0079] S250,将该数据X的新值写入磁盘(即SSD)。步骤S240必须在步骤S250之前执行。 [0080] S260,提交该事务T。
[0081] S270,产生一条该事务T的提交(COMMIT)日志记录。
[0082] S280,将S270产生的该事务T的提交(COMMIT)日志记录写入磁盘(即SSD)。
[0083]假设,在步骤S250之后,数据库系统发生故障,导致事务T在运行至正常结束点(即 S280)之前被终止,即步骤S260、S270和S280未执行。但是在故障发生之前,事务T对数据库 的更新操作已经生效,即事务T对数据X修改之后的新值已经写入磁盘。这时,数据库处于错 误状态,需要恢复该事务T,即根据事务T的日志记录撤销(UNDO)该事务T。如图2中所示,反 向扫描日志文件,查找事务T的日记记录,根据日志记录恢复该事务T,以将数据库恢复到该 事务T未执行之前的一致性状态。
[0084]在本发明实施例中,在生成事务的日志记录过程中,通过将数据的旧值在存储设 备中的物理地址记录到事务的日记记录中,从而使得在事务恢复时,通过利用日志记录中 记载的数据的旧值的物理地址替换该数据的新值的物理地址,使得数据库事务恢复到事务 执行之前的状态。因此,相对于传统技术,本发明实施例在事务恢复时,能够有效减少写操 作,在存储设备为SSD的情况下,进而能够减少闪存的擦除操作,从而能够延长闪存的寿命。 另外,由于减少了写操作,因此也能够有效提高事务恢复的效率。
[0085] 还应理解,在图3中,如果事务T运行至正常结束点,即顺利执行完步骤S280,则该 事务T成功提交。则在如图2所示的事务恢复的步骤S120中,判断事务T有提交(COMMIT)日记 记录,则不做处理(如图2中的步骤S130所示)。
[0086]可选地,在本发明实施例中,事务对数据库中数据进行更新操作包括以下几种情 形:
[0087]第一种情形:修改数据(如图3所示)。
[0088] 事务T修改数据X的数值,例如数据X的初始数值为a (对应于旧值),事务T将数据X 的数值修改为b(对应于新值)。这种情形下,数据X的旧值a与新值b各自存储在磁盘中,数据 X的旧值a在磁盘中有对应的物理地址,数据X的新值b在磁盘中有对应的物理地址。
[0089] 第二种情形,插入数据。
[0090] 在事务T执行之前,数据库中不存在数据X。执行事务T,事务T将数据X插入数据库 中。这种情形下,数据X的旧值及其物理地址均为空值,相应地,日记记录中针对该数据X的 旧值的物理地址的记录项也为空项。
[0091] 第三种情形,删除数据。
[0092] 在事务T执行之前,数据库中存在数据X。执行事务T,该事务T将数据X从数据库中 删除。这种情形下,该数据X的新值及其物理地址均为空值,相应地,日记记录中针对该数据 X的新值的记录项也为空项。
[0093] 可选地,在本发明实施例中,如表3所示,根据事务对数据执行的更新操作生成的 更新操作日志包括:
[0094]事务标识(T_ID),用于指示该事务,例如用于存储该事务的标示符。
[0095]操作对象(Element),用于指示该事务所操作的数据。
[0096]可选地,该操作对象可以直接存储该事务所操作的数据的新值或者该数据的新值 在存储设备中的物理地址;
[0097]历史地址(PreAddress),用于指示该事务所操作的数据的旧值的物理地址。具体 地,历史地址可以直接存储该事务所操作的数据的旧值在存储设备中的物理地址。
[0098]表 3
[0100]从表3可知,针对上述事务对数据库中数据进行更新操作的三种不同情形,对应的 日志记录的内容有所不同,在上述三种不同情形中,Element与PreAddress中存储的信息分 别如下所述:
[0101 ]在第一种情形(修改数据)中,Element中存储的是事务修改之后的数据的新值, PreAddre ss中存储的是事务修改之前的数据的旧值的物理地址,如表1中第2行、第3行、第7 行、第8行所示。
[0102]在第二种情形(插入数据)中,Element中存储的是事务修改之后的数据的新值, PreAddress中存储的数据的旧值的物理地址设置为空,如表2中第4行所示。
[0103]在第三种情形(删除数据)中,在更新记录(如表2中第5行所示)的同时,再增加一 条日志,使用相同的事务标识和Element,但是将数据的旧值的物理地址设置为删除标识 (如表2中第6行所示)。
[0104]在基于表3所示的日志记录进行事务恢复过程中,对于第一种情形(如表1中第2 行、第3行、第7行、第8行所示),利用,PreAddress中存储的数据的旧值的物理地址替换 Element中存储的数据的新值的物理地址。对于第二种情形(如表2中第4行所示),可以直接 将数据的新值的物理地址置为空。对于第三种情形(如表2中第5行和第6行所示),按照删除 日志(如表2中第6行所示)的前一条日志的记录信息进行恢复,与第一种情形的恢复过程类 似。
[0105] 在本发明实施例中,提交(Commit)日志记录如表3中第10行所示,旧值的物理地址 置为空,El ement中存储提交(Commi t)标识。
[0106]可选地,在本发明实施例中,所述存储系统的闪存转换层(Flash translation layer,FTL)的逻辑地址LBA与物理地址的映射表中存储有所述旧值在所述存储系统中 的物理地址。
[0107]应理解,在闪存中,FTL负责LBA与PBA之间的转换,具体地,FTL是通过维护和更新 LBA与PBA的映射表(如表1或表2所示)来实现LBA与PBA之间的转换的。因此,FTL要想实现将 数据的逻辑地址(即LBA)指向数据的旧值的物理地址(即PBA),FTL所维护和更新的LBA与 PBA的映射表中就要事先存储有该数据的旧值的物理地址,这样,才能根据日志中记录的数 据的旧值的物理地址,实现将数据的逻辑地址(即LBA)指向数据的旧值的物理地址(即 PBA),从而将数据恢复到被事务修改之前的状态。
[0108]应理解,数据库管理系统定期会回收已提交事务的日志记录,通过扫描日志文件, 将具有提交(COMMIT)日记记录的事务的日志回收。
[0109] 如图4所示,本发明实施例还提供了一种数据库系统中事务日志回收的方法300, 该数据库系统的存储设备支持写时复制特性,该方法300的执行主体可以为数据库管理系 统,该方法300包括:
[0110] S310,反向扫描日志文件,即从日志文件的尾部逐步扫描日志。
[0111] S320,在扫描过程中,判断事务T是否有提交(COMMIT)日志记录,若否,转到S330, 若是,转到S340。
[0112] S330,确定事务T没有提交(COMMIT)日志记录,认为该事务T未提交,对其不做日志 回收处理。
[0113] S340,确定事务T有提交(COMMIT)日志记录,认为该事务T已经提交,回收该事务T 中被标记为无效的数据存储地址,例如数据的逻辑地址与物理地址。
[0114] S350,删除该事务T的日志记录。
[0115] S360,判断日志文件是否扫描完毕,若是,转到S370,若否,转到S320。
[0116] S370,回收删除的日志记录所在的日志数据页,例如删除该事务T的日志记录所在 的日志数据页。应理解,日志数据页指的是写入物理地址中的日志数据。
[0117] 在S340中,回收事务T中被标记为无效的数据物理地址,应理解,应理解,现有技术 中,在日志回收过程中,数据的旧值的物理存储空间均被回收,但在本发明实施例中,仅回 收被标识为无效的数据物理地址。
[0118] 可选地,在本发明实施例的步骤S330中,确定该事务T未提交的情况下,可以将该 事务T的日志记录与其他未提交事务的日志记录进行日志页合并。例如,将该事务T的日志 记录移动到其他未提交事务的日志记录所在的日志数据页上。
[0119] 应理解,回收事务日志是数据库系统的维护性操作,实际应用中,可以根据数据库 的事务量制定合理的调度计划。
[0120]本发明实施例中,在事务恢复过程中,利用数据的旧值的物理地址替换数据的新 值的物理地址,同时也要调整数据库的索引,应理解,数据库的索引是为了方便检索而对数 据按照特定方式进行组织的一种文件,因此,在数据库事务恢复时,也要调整对应的索引, 可以基于目前的相关技术调整数据库索引,在此不再赘述。
[0121]综上所述,在本发明实施例中,恢复事务时,通过利用数据的旧值的物理地址替换 所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理地址,使 得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事务恢复 时,能够有效减少写操作,在存储设备为SSD的情况下,进而能够减少闪存的擦除操作,从而 能够延长闪存的寿命。另外,由于减少了与操作,因此也能够有效提尚事务恢复的效率。
[0122] 为了便于理解和描述,上文以数据库系统的存储设备为SSD为例,描述了本发明实 施例的方法。但是本发明实施例对此不作限定,数据库系统的存储设备还可以是其他支持 写时复制(C0W)特征的存储设备,该存储设备可以基于硬件,也可以是基于软件,例如文件 系统。
[0123] 上文均以SSD基于闪存为存储介质为例进行描述,应理解,SSD还可以动态随机存 储器(dynamic random access memory,DRAM)作为存储介质,本发明实施例对此不做限定。
[0124] 如图5所示,在同等条件下,利用本发明实施例的方法进行事务恢复所产生的写操 作的次数,明显少于利用传统数据库事务恢复技术进行事恢复所产生的写操作的次数。
[0125] 如图6所示,在数据库的存储设备为SSD的情形下,在同等更新操作(Update Ops) 次数条件下,利用本发明实施例的方法进行事务恢复所需的恢复时间明显少于利用传统数 据库事务恢复技术进行事务恢复所需的恢复时间。图6中的HDD指的是硬盘驱动器(Hard Disk Drive,HDD),在数据库的存储设备为HDD的情形下,在同等更新操作(Update Ops)次 数条件下,利用本发明实施例的方法进行事务恢复所需的恢复时间明显少于传统数据库事 务恢复技术的恢复时间。
[0126] 图7示出了根据本发明实施例的数据库管理系统400的示意性框图,该数据库管理 系统400所属的数据库系统的存储设备支持写时复制特性,数据库管理系统400包括:
[0127] 确定模块410,用于确定该数据库系统中待恢复的事务,该待恢复事务未提交,该 待恢复事务对该数据库系统中的数据执行了更新操作。
[0128] 获取模块420,用于从用于记录该确定模块确定的该待恢复事务对该数据执行该 更新操作的更新操作日志中,获取该数据的旧值在该存储设备中的物理地址,该旧值为该 数据在该更新操作之前的值。
[0129] 替换模块430,用于利用该获取模块获取的该旧值在该存储设备中的物理地址替 换该数据的新值在该存储设备中的物理地址,并将该新值在该存储设备中的物理地址置为 无效,以使得该数据的逻辑地址指向该旧值在该存储设备中的物理地址,该新值为该数据 在该更新操作之后的值。
[0130]可选地,在本发明实施例中,确定模块410、获取模块420与替换模块430,可以由数 据库管理系统400中的处理器或处理器相关电路组件实现。
[0131]本发明实施例提供的数据库管理系统,恢复事务时,通过利用数据的旧值的物理 地址替换所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理 地址,使得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事 务恢复时,能够有效减少写操作,在存储设备为SSD的情况下,进而能够减少闪存的擦除操 作,从而能够延长闪存的寿命。另外,由于减少了写操作,因此也能够有效提高事务恢复的 效率。
[0132] 可选地,在本发明实施例中,该数据库管理系统400还包括:
[0133] 日志生成模块440,用于根据该待恢复事务对该数据执行的该更新操作,生成该更 新操作日志,该更新操作日志包括:事务标识、操作对象与历史地址,该事务标识用于指示 该待恢复事务,该操作对象用于指示该待恢复事务所操作的该数据,该历史地址用于指示 该旧值在该存储设备中的物理地址;
[0134] 日志写入模块450,用于在将该新值写入该存储设备之前,将该更新操作日志写入 该存储设备中。
[0135] 具体地,该日志生成模块440与日志写入模块450可以由数据库管理系统400中的 处理器或处理器相关电路组件实现。
[0136] 可选地,在本发明实施例中,该存储设备的闪存转换层的逻辑地址LBA与物理地址 PBA的映射表中存储有该旧值在该存储设备中的物理地址。
[0137] 可选地,在本发明实施例中,该更新操作为插入操作,该旧值以及该旧值在该存储 设备中的物理地址为空值;或
[0138] 该更新操作为删除操作,该新值以及该新值在该存储设备中的物理地址为空值。
[0139] 应理解,根据本发明实施例的数据库管理系统400中的各个模块的上述和其它操 作和/或功能分别为了实现图2至图4中的各个方法的相应流程,为了简洁,在此不再赘述。 [0140]需要说明的是,以图8为例介绍本发明实施例提供的数据库管理系统500的逻辑结 构。如图8所示,数据库管理系统500的硬件层包括处理器,例如CPU,当然还可以包括内存 (Memory)、输入/输出设备、网络接口等。在硬件层之上运行有操作系统内核,例如Linux Kernel以及一些驱动程序。除此之外,数据库管理系统还包括应用层,该应用层包括应用程 序等。
[0141] 应理解,图8中所示的内存(Memory)用于暂时存放图8中所示处理器中的运算数 据,以及与硬盘等外部存储器(如图1中所示的存储设备)交换的数据。
[0142] 本发明实施例提供的数据库管理系统400包含的确定模块410、获取模块420与替 换模块430具体可以由如图8中所示的处理器来实现。
[0143] 需要说明的是,在实际应用中,本发明实施例的数据库管理系统500的产品形态可 以是计算节点,或者服务器上的功能模块,本发明对此不作限定。
[0144] 应理解,本实施例提供的数据库管理系统500可以执行上述任一方法实施例中提 供的方法,详细过程见方法实施例中的描述,此处不赘述。此外,本实施例提供的数据库管 理系统500对应于本发明实施例提供的数据库管理系统400。
[0145] 本发明实施例提供的数据库管理系统,恢复事务时,通过利用数据的旧值的物理 地址替换所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理 地址,使得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事 务恢复时,能够有效减少写操作,在存储设备为SSD的情况下,进而能够减少闪存的擦除操 作,从而能够延长闪存的寿命。另外,由于减少了写操作,因此也能够有效提高事务恢复的 效率。
[0146] 图9示出了本发明实施例提供的另一种数据库管理系统600的示意性框图,该数据 库管理系统600所属的数据库系统的存储设备支持写时复制特性,数据库管理系统600可包 括处理器610、内存(Memory)620、总线系统630、输入设备640、输出设备650。
[0147] 内存620可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数 据。内存620的一部分还可以包括非易失性随机存取存储器(NVRAM)。
[0148] 内存620存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它 们的扩展集:
[0149] 操作指令:包括各种操作指令,用于实现各种操作。
[0150] 操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
[0151] 在本发明实施例中,处理器610通过调用内存620存储的操作指令(该操作指令可 存储在操作系统中),执行如下操作:
[0152] 确定该数据库系统中待恢复的事务,该待恢复事务未提交,该待恢复事务对该数 据库系统中的数据执行了更新操作;从用于记录该待恢复事务对该数据执行该更新操作的 更新操作日志中,获取该数据的旧值在该存储设备中的物理地址,该旧值为该数据在该更 新操作之前的值;利用该旧值在该存储设备中的物理地址替换该数据的新值在该存储设备 中的物理地址,并将该新值在该存储设备中的物理地址置为无效,以使得该数据的逻辑地 址指向该旧值在该存储设备中的物理地址,该新值为该数据在该更新操作之后的值。
[0153]本发明实施例提供的数据库管理系统,恢复事务时,通过利用数据的旧值的物理 地址替换所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理 地址,使得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事 务恢复时,能够有效减少写操作,在存储设备为SSD的情况下,进而能够减少SSD的擦除操 作,从而能够延长SSD的寿命。另外,由于减少了写操作,因此也能够有效提高事务恢复的效 率。
[0154] 处理器610还可以称为CPU(Central Processing Unit,中央处理单元)。内存620 可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数据。内存620的一部 分还可以包括非易失性随机存取存储器(NVRAM)。具体的应用中,数据库管理系统600的各 个组件通过总线系统630耦合在一起,其中总线系统630除包括数据总线之外,还可以包括 电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为 总线系统630。
[0155] 上述本发明实施例揭示的方法可以应用于处理器610中,或者由处理器610实现。 处理器610可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各 步骤可以通过处理器610中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理 器610可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列 (FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或 者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或 者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直 接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完 成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可 编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于内存620,处理器610读取 内存620中的信息,结合其硬件完成上述方法的步骤。
[0156] 可选地,在本发明实施例中,处理器610具体用于,根据该待恢复事务对该数据执 行的该更新操作,生成该更新操作日志,该更新操作日志包括:事务标识、操作对象与历史 地址,该事务标识用于指示该待恢复事务,该操作对象用于指示该待恢复事务所操作的该 数据,该历史地址用于指示该旧值在该存储设备中的物理地址;在将该新值写入该存储设 备之前,将该更新操作日志写入该存储设备中。
[0157] 可选地,在本发明实施例中,该存储设备的闪存转换层的逻辑地址LBA与物理地址 PBA的映射表中存储有该旧值在该存储设备中的物理地址。
[0158] 可选地,在本发明实施例中,该更新操作为插入操作,该旧值以及该旧值在该存储 设备中的物理地址为空值;或
[0159]该更新操作为删除操作,该新值以及该新值在该存储设备中的物理地址为空值。 [0160]本发明实施例提供的数据库管理系统,恢复事务时,通过利用数据的旧值的物理 地址替换所述数据的新值的物理地址,使所述数据的逻辑地址指向所述数据的旧值的物理 地址,使得所述数据恢复为旧值,即实现了事务恢复。相对于传统技术,本发明实施例在事 务恢复时,能够有效减少写操作,进而能够减少存储设备的擦除操作,从而能够延长存储设 备的寿命。另外,由于减少了与操作,因此也能够有效提尚事务恢复的效率。
[0161]应理解,根据本发明实施例的数据库管理系统600可对应于本发明实施例的数据 库系统中事务恢复的方法的执行主体,以及可以对应于根据本发明实施例的数据库管理系 统400和数据库管理系统500,并且数据库管理系统600中的各个模块的上述和其它操作和/ 或功能分别为了实现图2至图4中的各个方法的相应流程,为了简洁,在此不再赘述。
[0162] 应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺 序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实上 施过程构成任何限定。
[0163] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单 元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟 以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员 可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出 本发明的范围。
[0164] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、 装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0165] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的 划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或 讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦 合或通信连接,可以是电性,机械或其它的形式。
[0166] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0167] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0168] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以 存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说 对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计 算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个 人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。 而前述的存储介质包括:U盘、移动硬盘、只读存储器(R0M,Read-0nly Memory)、随机存取存 储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0169]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何 熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵 盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
【主权项】
1. 一种数据库系统中事务恢复的方法,所述数据库系统的存储设备支持写时复制特 性,其特征在于,包括: 确定所述数据库系统中待恢复的事务,所述待恢复事务未提交,所述待恢复事务对所 述数据库系统中的数据执行了更新操作; 从用于记录所述待恢复事务对所述数据执行所述更新操作的更新操作日志中,获取所 述数据的旧值在所述存储设备中的物理地址,所述旧值为所述数据在所述更新操作之前的 值; 利用所述旧值在所述存储设备中的物理地址替换所述数据的新值在所述存储设备中 的物理地址,并将所述新值在所述存储设备中的物理地址置为无效,以使得所述数据的逻 辑地址指向所述旧值在所述存储设备中的物理地址,所述新值为所述数据在所述更新操作 之后的值。2. 根据权利要求1所述的方法,其特征在于,在所述确定所述数据库系统中待恢复的事 务之前,所述方法还包括: 根据所述待恢复事务对所述数据执行的所述更新操作,生成所述更新操作日志,所述 更新操作日志包括:事务标识、操作对象与历史地址,所述事务标识用于指示所述待恢复事 务,所述操作对象用于指示所述待恢复事务所操作的所述数据,所述历史地址用于指示所 述旧值在所述存储设备中的物理地址; 在将所述新值写入所述存储设备之前,将所述更新操作日志写入所述存储设备中。3. 根据权利要求1或2所述的方法,其特征在于,所述存储设备为基于闪存作为存储介 质的固态硬盘,所述存储设备的闪存转换层的逻辑地址LBA与物理地址PBA的映射表中存储 有所述旧值在所述存储设备中的物理地址。4. 根据权利要求1至3中任一项所述的方法,其特征在于,所述更新操作为插入操作,所 述旧值以及所述旧值在所述存储设备中的物理地址为空值;或 所述更新操作为删除操作,所述新值以及所述新值在所述存储设备中的物理地址为空 值。5. -种数据库管理系统,所述数据库管理系统所属的数据库系统的存储设备支持写时 复制特性,其特征在于,包括: 确定模块,用于确定所述数据库系统中待恢复的事务,所述待恢复事务未提交,所述待 恢复事务对所述数据库系统中的数据执行了更新操作; 获取模块,用于从用于记录所述确定模块确定的所述待恢复事务对所述数据执行所述 更新操作的更新操作日志中,获取所述数据的旧值在所述存储设备中的物理地址,所述旧 值为所述数据在所述更新操作之前的值; 替换模块,用于利用所述获取模块获取的所述旧值在所述存储设备中的物理地址替换 所述数据的新值在所述存储设备中的物理地址,并将所述新值在所述存储设备中的物理地 址置为无效,以使得所述数据的逻辑地址指向所述旧值在所述存储设备中的物理地址,所 述新值为所述数据在所述更新操作之后的值。6. 根据权利要求5所述的数据库管理系统,其特征在于,所述数据库管理系统还包括: 日志生成模块,用于根据所述待恢复事务对所述数据执行的所述更新操作,生成所述 更新操作日志,所述更新操作日志包括:事务标识、操作对象与历史地址,所述事务标识用 于指示所述待恢复事务,所述操作对象用于指示所述待恢复事务所操作的所述数据,所述 历史地址用于指示所述旧值在所述存储设备中的物理地址; 日志写入模块,用于在将所述新值写入所述存储设备之前,将所述更新操作日志写入 所述存储设备中。7. 根据权利要求5或6所述的数据库管理系统,其特征在于,所述存储设备为基于闪存 作为存储介质的固态硬盘,所述存储设备的闪存转换层的逻辑地址LBA与物理地址PBA的映 射表中存储有所述旧值在所述存储设备中的物理地址。8. 根据权利要求5至7中任一项所述的数据库管理系统,其特征在于,所述更新操作为 插入操作,所述旧值以及所述旧值在所述存储设备中的物理地址为空值;或 所述更新操作为删除操作,所述新值以及所述新值在所述存储设备中的物理地址为空 值。9. 一种数据库管理系统,所述数据库管理系统所属的数据库系统的存储设备支持写时 复制特性,其特征在于,所述数据库管理系统包括内存和处理器,所述内存用于存储指令, 所述处理器用于执行所述内存存储的指令,并且对所述内存存储的指令的执行使得所述处 理器用于: 确定所述数据库系统中待恢复的事务,所述待恢复事务未提交,所述待恢复事务对所 述数据库系统中的数据执行了更新操作; 从用于记录所述待恢复事务对所述数据执行所述更新操作的更新操作日志中,获取所 述数据的旧值在所述存储设备中的物理地址,所述旧值为所述数据在所述更新操作之前的 值; 利用所述旧值在所述存储设备中的物理地址替换所述数据的新值在所述存储设备中 的物理地址,并将所述新值在所述存储设备中的物理地址置为无效,以使得所述数据的逻 辑地址指向所述旧值在所述存储设备中的物理地址,所述新值为所述数据在所述更新操作 之后的值。10. 根据权利要求9所述的数据库管理系统,其特征在于,所述处理器还用于,根据所述 待恢复事务对所述数据执行的所述更新操作,生成所述更新操作日志,所述更新操作日志 包括:事务标识、操作对象与历史地址,所述事务标识用于指示所述待恢复事务,所述操作 对象用于指示所述待恢复事务所操作的所述数据,所述历史地址用于指示所述旧值在所述 存储设备中的物理地址;在将所述新值写入所述存储设备之前,将所述更新操作日志写入 所述存储设备中。11. 根据权利要求9或10所述的数据库管理系统,其特征在于,所述存储设备为基于闪 存作为存储介质的固态硬盘,所述存储设备的闪存转换层的逻辑地址LBA与物理地址PBA的 映射表中存储有所述旧值在所述存储设备中的物理地址。12. 根据权利要求9至11中任一项所述的数据库管理系统,其特征在于,所述更新操作 为插入操作,所述旧值以及所述旧值在所述存储设备中的物理地址为空值;或 所述更新操作为删除操作,所述新值以及所述新值在所述存储设备中的物理地址为空 值。
【文档编号】G06F17/30GK105930500SQ201610300319
【公开日】2016年9月7日
【申请日】2016年5月6日
【发明人】孟小峰, 孙东旺
【申请人】华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1