首页> 中国专利> 恒定时间数据库恢复

恒定时间数据库恢复

摘要

数据库恢复可以在基本恒定的时间内被执行。从数据库交易日志,可以标识一个或多个交易的状态,一个或多个交易包括崩溃时活动但未被提交的那些交易。从最后一个成功检查点的开头开始到交易日志的结尾,可以顺序地重新应用交易。未被提交的用户交易不被同步撤消,而只是被标记为中止。随后,受影响的数据元素的版本可以被异步还原为先前保存版本。

著录项

说明书

背景技术

数据库是可以提供某些保证(即原子性、一致性、隔离性和持久性(被称为ACID性质))的交易系统。交易是读取或更新数据库内容的一个动作或一系列动作。例如,交易可以是借记第一帐户并且贷记第二帐户的汇款。原子交易是所有动作都被执行或任何动作都不被执行的交易。金钱不从第一帐户借记,也不贷记第二帐户。一致性是指交易以允许的方式改变数据以从先前有效状态产生新的有效状态的要求。例如,金钱不会丢失或获得。隔离性确保了进行中的交易被相互隔离。例如,第一帐户和第二帐户不能被察看,直到操作完成为止。此外,改变是持久的,因为即使在故障或系统重新启动的情况下,数据也可以保持其正确状态。

在任何时间点,数据库可能需要从由断电、代码中的关键错误、磁盘崩溃或自然灾害等引起的崩溃或故障恢复。数据库恢复过程确保了数据库返回一致状态。许多数据库采用ARIES(利用语义的恢复和隔离算法)交易恢复协议。ARIES包括三个阶段:分析、重做和撤消。首先,遍历交易日志以标识崩溃时的所有交易及其状态。其次,交易日志在时间顺上被遍历到日志的结尾,并且顺序地重做操作,以使数据库返回到与崩溃时一致的状态。第三,交易日志从日志的结尾被向后遍历到最旧活动交易,并且由未被提交的交易执行的所有操作都被撤消或回滚。

发明内容

以下呈现简化的概述,以便提供对所公开主题的一些方面的基本理解。本发明内容不是广泛的概括。它不旨在标识关键/至关重要的元素或描绘所要求保护的主题的范围。其唯一目的是以简化的形式呈现一些概念,作为稍后被呈现的更详细描述的序言。

简要地描述,本公开涉及恒定时间数据库恢复。恢复包括:标识在数据库的交易日志中指定的交易,以及从最后成功的检查点开始到交易日志的结尾,按时间顺序重做交易。此外,未被提交的交易被标记为被中止,并且未被提交的交易的进一步处理被异步执行。随后,被标记为中止的交易被标识,并且数据被还原到先前提交版本。此外,存在不能被版本控制的交易操作的子集。一个种类涉及与用户交易绑定的逻辑操作。这些操作可以被添加到辅助日志中,该辅助日志可以用于同步地重做和撤消那些交易。此外,可以通过移除检查点之前的交易来基本上截断交易日志。

为了实现前述和相关目的,本文中结合以下描述和附图来描述所要求保护的主题的某些说明性方面。这些方面指示可以在其中实践主题的各种方式,所有这些方式都旨在在所公开的主题的范围内。当结合附图考虑时,从下面的详细描述中,其他优点和新颖特征可以变得明显。

附图说明

图1是数据库恢复系统的示意性框图。

图2是撤消组件的示意性框图。

图3是数据库恢复的时间线图。

图4是数据库恢复方法的流程图。

图5是清理器方法的流程图。

图6是处理更新的方法的流程图。

图7是构造辅助日志的方法的流程图。

图8是数据库恢复的方法的流程图。

图9是在数据库恢复期间采用交易锁定的方法的流程图。

图10是图示用于本公开的方面的合适操作环境的示意性框图。

具体实施方式

常规的数据库恢复协议(包括分析、重做和撤消)针对最旧活动交易执行恢复。因此,恢复时间与最长交易大小成正比,对于长期运行交易,这可能是几个小时。这种漫长的恢复可以导致数据库长时间对用户不可用。在云环境中,与本地部署相比,故障明显更加频繁,并且不受用户的控制。这导致意外的停机以及严重的服务中断,这降低了服务的质量。此外,由于利用了来自最旧活动交易的交易日志,因此在长期运行的交易活动时,需要大量磁盘空间来维持日志。

本描述涉及恒定时间的数据库恢复。恢复协议被修改以使得恢复基本能够在恒定时间内被执行,而不是取决于长期运行的活动交易的长度。交易日志可以被分析以确定崩溃时的交易状态,包括交易是否被提交或中止。交易接下来可以结合交易日志从最后成功的检查点到交易日志的结尾的向前遍历被重做或者被重放。但是,未被提交的交易的撤消操作不被同步执行,并且从日志的结尾到最旧活动交易向后执行。相反,未被提交的交易被如此标记或加标签,并且在稍后的时间异步执行另外的动作。被标记的交易后续可以被用来将受影响的数据还原为该数据的先前提交版本。因此,重做和撤消不需要从最旧活动交易和到最旧活动交易来处理交易日志。因此,与基于最旧活动交易而变化相反,恢复时间受检查点周期的限制,从而显著改进了数据库的可用性。

大量交易是具有可以被版本控制的物理操作的用户交易。但是,还可能出现不能被版本控制的其他用户交易操作,例如,包括与锁定和高速缓存一致性相关联的逻辑操作。为了处理逻辑操作以及不受版本控制的物理操作的有限集合,可以创建仅包含这些操作的辅助或特殊日志。然后,可以使用辅助日志,相对于最旧活动交易,以同步的方式撤消和重做这种交易操作。但是,与物理操作相比,至少由于这种逻辑操作的频率稀少和短处理时间,数据库恢复时间不会受到任何重大的影响。

此外,交易日志可以被截断以减少需要分配的空间量。更具体地,交易日志可以被主动截断以移除检查点之前的交易。以这种方式截断交易日志允许使用少量和恒定的日志空间量来执行大型交易。

现在参考附图更详细地描述本公开的各个方面,其中贯穿全文,相同的附图标记通常指代相同或对应的元素。然而,应当理解,附图和与其相关的详细描述并不旨在将所要求保护的主题限制于所公开的特定形式。相反,意图是涵盖落在所要求保护的主题的精神和范围内的所有修改、等同物和备选方案。

首先参考图1,数据库恢复系统100被图示。数据库恢复系统100与数据库102和交易日志104交互。交易日志104是预写日志,其中在修改被应用于数据库102之前对数据库102的所有修改被写入到交易日志。数据库102是非易失性计算机可读存储介质。在一个实例中,数据库102为用户数据提供版本控制存储。代替就地进行替换当前数据的更新,不就地有效地进行更新。换句话说,更新生成了数据元素的新版本,该新版本可以被链接到旧版本。作为示例,如果第一帐户指示余额$100,并且添加了$10的贷款,则将通过生成链接到旧余额$100的新版本将余额更新为$110。数据库恢复系统100利用交易日志104,来使得数据库102能够从崩溃或其他故障(例如由断电、磁盘崩溃、关键错误或自然灾害而导致)恢复。数据库恢复系统100包括分析组件110、重做组件120、撤消组件130、清理器组件140、辅助日志组件150、日志截断组件160和锁定组件170。

分析组件110遍历交易日志104并且确定崩溃后每个交易的状态。检查点可以在正常处理期间定期(例如,每两分钟)进行,并且在缓冲池中记录活动交易、它们的状态以及经修改的数据(例如,脏页面)。分析组件110可以从最后成功的检查点开始分析,并且前进到交易日志的结尾。可以标识每个交易,并且确定其状态,状态诸如是交易被提交还是被中止。分析组件110还可以确定由重做组件120和撤消组件130中的一个或两个使用的附加信息。作为示例而非限制,分析组件110可以确定重做的起点(即重做日志序列号),并且可以确定要被撤消或回滚的交易。

重做组件120被配置成在崩溃时重做交易以重新建立数据库102的状态。换句话说,重做组件120重放交易。从交易日志的起点到结尾向前并且顺序地重放交易。起始点可以是最后一个成功检查点的时间,或者可以是由分析组件110标识的重做日志序列号。由于可能的状态不一致,可能使得数据库不可用,直到重做完成为止。

撤消组件120被配置成有效地撤消未被提交的交易,以将数据库返回到一致状态。从交易日志的结尾到最旧未被提交的交易,向后或以相反的时间顺序遍历交易日志可能非常耗时。例如,考虑更新数据库102中的每一个记录以将利息应用于帐户的交易。如果数据库102在交易被提交给持久性存储装置之前崩溃,则将需要撤消所有改变以维持数据库一致性。根据本公开的一个方面,撤消组件120可以仅将交易标示或标记为中止或撤消并且推迟后续处理。数据库102中的每个数据元素可以与版本相关联并且包括交易标识符。如果交易标识符被标记为中止,则数据库102可以还原到先前的值。

清理器组件140被配置成执行数据库的清理,该清理将数据更新为先前值或者回收空间。该清理过程可以被称为逻辑还原。逻辑还原是用其最后提交版本更新数据元素的操作。可以存在两个阶段-标识和更新。首先,清理器组件140可以确定诸如行的数据元素是否属于中止的交易。这可以通过搜索具有被标记为中止的交易标识符的数据元素来确定。其次,利用最新提交版本来代替未被提交的行。在一个实施例中,可以通过执行可以包括插入、删除或修改的补偿操作,来执行逻辑还原。例如,如果记录在页面上的最新版本被影子化(ghosted),这意味着该行被标记为用于删除,则补偿操作是插入。相反,如果记录的当前版本不是影子记录,但是过去提交的记录为空或影子记录,则补偿操作是删除。否则,补偿操作可能是修改操作,诸如向帐户添加$10,以使帐户从$100增加到$110。根据一个方面,清理器组件140和逻辑还原过程可以作为后台过程被执行。备选地,可以通过更新交易来触发这种功能。例如,在数据元素被更新之前,可以做出关于数据元素是否与被标记为中止的交易相关联的检查。如果交易被标记为中止,则可以启动逻辑还原。

辅助日志组件150针对操作的子集生成辅助日志或特殊日志。大量数据库交易是执行可以被版本控制的物理操作(例如,插入、更新、删除……)的用户交易。可能存在不能被版本控制的交易操作的子集。一个种类涉及仍然与用户交易绑定的逻辑操作,诸如各种元数据操作以及对对应高速缓存和计数器的管理等。如果对应的交易要被回滚,则这种逻辑操作也可以被撤消。但是,这种交易的撤消可能不能用版本控制进行管理,因为它们是逻辑的,并且没有物理对象来进行版本控制。对于这些操作,可以生成并且维护辅助日志来使能恢复。辅助日志可以是类似于交易日志104的顺序日志流。此外,可以更改用于对交易日志104设置检查点的检查点机制,以进一步支持对辅助日志设置检查点。在恢复期间,重做组件120可以按时间顺序从最旧活动交易到日志的结尾重新应用辅助日志中的操作,并且撤消组件130可以按相反的时间顺序从辅助日志的结尾回滚与未被提交的交易相关联的操作。鉴于辅助日志中的日志记录的数目非常少,所以撤消操作应当在可忽略的时间内完成,诸如在不到一秒钟。

日志截断组件160被配置成截断交易日志104和辅助日志中的一个或两个,这减少了空间供应和管理。由于恢复从最后一个成功检查点的开头(而不是从最旧活动交易)开始使用交易日志104,因此随着检查点出现,日志截断组件160可以连续截断交易日志104,以消除检查点之前的记录。更具体地,交易日志104可以仅用于从检查点的开头到日志的结尾重做版本控制的交易。交易日志不被用来撤消版本控制的交易,并且结合辅助日志来处理一些非版本控制的交易。这可以允许用户使用较小的、恒定的空间量来执行大型交易。辅助日志与最旧活动交易的开始和日志的结尾有关。因此,日志截断组件160可以消除没有落在该范围内的任何记录。

除了非版本控制的逻辑操作之外,还存在与分配新页面、存储附加数据或释放未使用空间相关联的非版本控制的系统交易的集合。与这些系统交易相关联的操作被高度压缩(例如,每六十四个千字节一位)并且难以进行版本控制。此外,这些操作不需要与用户交易绑定。例如,即使不立即使用空间,也可以分配一些额外的空间。因此,根据本公开的一个方面,这些系统交易可以作为短期系统交易被执行,该短期系统交易在崩溃的情况下可以被快速恢复。作为示例,考虑需要分配附加空间的大量插入操作。对应的系统交易可以在提交之后被快速并且基本上立即执行。即使它是一个小并且快速的操作,该操作也有可能在执行的中间失败。可以执行传统的方法,其中这种操作被重做并且如果未被提交,则然后被撤消。尽管使用了传统的恢复方法,但交易较少并且短,因此它们不会显著影响恢复时间。

锁定组件170被配置成锁定尚未被清理或撤消的数据。在完全恢复完成之前,数据库恢复系统100可以允许数据库102可用。常规的数据库系统将针对每个交易获取的锁定存储在交易日志中,并且在分析和重做期间重新获取它们,以便在撤消发生时数据库可以可访问。数据库恢复系统100在恢复完成之前允许数据库访问,而不必在恢复期间存储和重新获取针对每个交易的所有锁定。由于每个数据元素(例如,行)版本被标记有生成该数据元素的交易的交易标识符,所以锁定组件170可以在针对待恢复的每个交易的交易标识符上应用排他锁,并且使数据库102在重做之后立即可用。对数据元素版本的任何新访问将需要获取该版本的交易标识符上的共享锁定,从而与处于恢复中间的交易进行同步。一旦交易已经被完全重做,交易锁定就由锁定组件170释放,并且所有访问可以正常进行。这显著减少了需要维护的锁定的数目,并且允许了数据库可用性,而不必遍历交易日志以便重新获取所有适当的锁定。一些数据库对象不直接与诸如行(例如,对象元数据)的数据元素相关联,因此锁定仍然需要被记录和重新获取。但是,由于它们极为少见,因此辅助日志可以被用来在恢复期间存储和重新获取这种锁定,而不必担心锁定的数目。

将注意力转向图2,更详细地图示了根据一个实施例的撤消组件130。撤消组件130包括物理组件210、逻辑组件220和系统组件230。撤消组件130被配置成撤消未被提交的交易的操作。然而,撤消组件130的功能可以基于交易的类型变化。

物理组件210相对于包括用户交易的物理操作而操作。在这种情况下,回滚操作将被推迟,并且不会作为撤消过程的一部分同步出现。相反,数据库中的用户数据修改被版本控制(例如使用行水平版本控制),并且与生成了该版本的对应交易相关联。如果交易由于它未提交被回滚,则可以在持久性存储装置中将该交易标记为“中止”。这些中止的版本可以由打扫数据库以将它们移除的后台线程缓慢清除。如果新的用户交易尝试更新具有被中止的版本的行,则可以修复页面以显示该行的最后提交版本。

逻辑组件220相对于与用户交易相关联的逻辑操作而操作。逻辑操作可以与用户交易(诸如,各种元数据操作以及对应高速缓存和计数器的管理,等)绑定。如果对应的用户交易在崩溃之前未提交,则这些操作可能需要被回滚。但是,版本控制不适用,因为该操作是逻辑的,并且没有物理对象来进行版本控制。这些操作可以结合传统的撤消被记录在辅助日志中,其中按相反时间顺序从辅助日志的结尾到最旧活动交易,来回滚由交易生成的经记录的操作。

系统组件230相对于与系统交易相关联的操作而操作。这种操作可以涉及对系统页面(诸如,索引页面、分配页面和位图等)的操作。这些操作通常管理系统数据,并且不一定需要与用户交易绑定。此外,这些页面被高度压缩,并且因此版本控制不是合适的选项。在这些情况下,对这种页面的所有更新可以被移动到内部短期交易,内部短期交易将执行传统的撤消,但是鉴于其较短的长度,不应当显著影响恢复以及与其相关联的恒定时间。

图3是与用户交易的物理和逻辑操作相关联的恢复过程的时间线图300,以帮助澄清和理解。交易日志时间线310被示出,其包括多个物理操作记录(P1-P6)以及逻辑操作记录(L1-L4)。辅助日志时间线320仅包括逻辑运算(L1-L4)。物理操作可以包括数据元素(诸如,表的一行)的插入、删除或修改。逻辑操作可以包括元数据操作以及对应高速缓存和计数器的管理等。在两个时间线上都表示了三个离散的时间点,即最旧活动交易330的开始、检查点340和日志350的结尾。数据库恢复可以在崩溃之后被发起,例如在日志350的结尾处出现。首先,在360处,可以利用分析过程来发起恢复,该分析过程在时间上从检查点340到日志350的结尾分析交易日志,来确定交易并且确定交易是否被提交。此外,可以从检查点加载辅助日志。接下来,在370处,可以从最旧交易到检查点(这里,L1和L2)应用逻辑操作的重做。然后,在380处,可以从交易日志在时间上从检查点340到日志350的结尾执行重做。此外,重做可以包括通过用最后一个检查点之后的任何逻辑操作记录填充辅助日志来重建辅助日志,从而将辅助日志恢复为其在崩溃时的状态。最后,在390处,从日志350的结尾到最旧活动交易330以相反的时间顺序撤消未被提交的逻辑操作。版本控制和逻辑还原被用来处理未被提交的物理交易,从而避免回滚作为恢复序列中的物理交易撤消的一部分。

已经关于若干组件之间的交互描述了上述系统、架构、环境等。应当理解,这种系统和组件可以包括其中规定的那些组件或子组件、规定的组件或子组件中的一些和/或附加组件。子组件也可以被实现为通信地耦合到其他组件而不是被包括在父组件内的组件。此外,一个或多个组件和/或子组件可以被组合成单个组件以提供聚合功能。系统、组件和/或子组件之间的通信可以根据推送和/或拉取模型来实现。为了简洁起见,组件还可以与本文中未具体描述但本领域技术人员已知的一个或多个其他组件交互。

鉴于上述示例性系统,可以参考图4-9的流程图更好地理解可以根据所公开的主题来实现的方法。虽然为了简化说明的目的,将方法示出和描述为一系列框,但是应当理解和意识到,所公开的主题不受框的顺序的限制,因为一些框可以以不同的顺序出现和/或与本文中所描绘和描述的其他框同时发生。此外,可能不需要所有图示的框来实现下文中描述的方法。此外,每个框或框的组合可以由可以被提供给处理器以产生机器的计算机程序指令来实现,使得在处理器上执行的指令创建用于实现由流程图框所指定的功能的部件。

图4图示了数据库恢复的方法400。在附图标记410处,通过从检查点到日志的结尾遍历交易日志来分析日志记录。特别地,分析可以揭示崩溃之前正在执行的活动交易和对应操作。在一个实施方式中,活动交易可以被存储在交易表中。在附图标记420处,所标识的活动交易的状态也从交易日志被确定。例如,该状态可以对应于活动交易是否在崩溃之前被提交(例如,被写入磁盘)。在一个实施方式中,该状态信息可以被用来填充脏页面表,该脏页面表包括根据特定日志操作在缓冲器中被更新但未被写入磁盘的页面的标识。在附图标记430处,重做或重放针对所有交易,甚至是那些未提交的交易的操作,以使数据库返回到崩溃时的状态。在附图标记440处,未被提交的交易被标记为中止,并且另外的动作被推迟。换句话说,不同步执行常规的撤消过程,在该过程中,交易日志从结尾向后扫描,并且针对每个未被提交的交易的所有操作被撤消。而是,版本控制和逻辑还原可以被异步执行,以有效地撤消中止的交易的操作,但是可以在稍后的时间以不同的方式进行。

图5是清理器方法500的流程图。至少对于物理用户交易,未被提交的交易的操作的影响不必立即被撤消。相反,后台清理器方法500可以异步解决该影响。在附图标记510处,可以标识受中止的交易影响的一个或多个位置的标识。数据元素或对象(诸如表的行)可以包括数据以及与该数据关联的交易标识符。因此,例如,可以通过扫描具有被标记为中止的交易标识符的数据来标识位置。在附图标记520处,数据的当前版本被还原为先前提交版本。代替就地进行替换现有数据的更新,不就地有效地进行更新。换句话说,更新生成了数据元素的新版本,该新版本可以链接到旧版本。尽管不限于此,但在一个实施方式中,可以通过执行可以包括插入、删除或修改的补偿操作来执行逻辑还原。

图6图示了鉴于潜在的中止的交易来处理更新的方法600。在附图标记610处,可以接收更新数据元素(诸如表的行)的请求。在附图标记620处,可以进行关于数据元素是否与中止的交易有关的确定。例如,可以进行关于与数据相关联的交易标识符是否已经被标记为中止的检查。如果数据元素与中止的交易有关(“是”),则方法在附图标记630处继续,其中数据元素被还原为先前提交版本。例如,可以执行逻辑还原,其中应用补偿操作以产生先前提交版本。随后,在640处,执行更新请求。如果在620处确定更新不涉及与中止的交易有关的数据元素(“否”),则方法直接进行到附图标记640,在此处执行更新请求。

图7是构造辅助日志的方法700的流程图。在附图标记710处,从交易日志接收、取回或以其他方式获得或获取包括一个或多个操作的交易。在附图标记720处,做出关于交易日志是否包括一个或多个逻辑操作的确定。逻辑操作与用户交易绑定,并且可以包括各种元数据操作以及对应高速缓存和计数器的管理等。如果在720处确定没有逻辑操作(“否”),则该方法可以终止。备选地,如果在720处确定存在一个或多个逻辑操作(“是”),则方法进行到附图标记730,其中将一个或多个逻辑操作添加到辅助日志。例如,在恢复期间,从检查点开始,可以分析交易,并且将逻辑操作添加到辅助日志以支持后续撤消。

图8描绘了数据库恢复的方法800。在附图标记810处,分析辅助日志中的交易。辅助日志与交易日志的不同之处在于,它仅包括逻辑操作,并且可选地包括不支持版本控制的物理操作的有限集合。分析的结果可以是对所有交易的标识,包括在崩溃时中止的交易。在附图标记820处,在时间上从最旧活动交易到日志的结尾重做或重新应用交易。结果,对于辅助日志中的交易,数据库将处于其在崩溃时的状态。在附图标记830处,被中止或未被提交的交易被撤消。例如,可以以相反的时间顺序从结尾到最旧活动交易遍历辅助日志,并且通过执行适当的补偿动作来撤消或回滚中止的交易的影响。

图9是图示在数据库恢复期间采用交易锁定的方法的流程图。在附图标记910处,处于恢复过程中的交易被标识。例如,如果交易未提交,则可以将该交易标记为中止,并且需要采取动作来撤消该交易的影响。在附图标记920处,在与恢复中的交易相关联的交易标识符上设置排他交易锁定。结果,试图访问数据的任何用户查询将被该锁定阻挡。根据一个实施例,诸如表的行的数据元素可以与交易标识符相关联。通过对该标识符应用锁定,对具有该交易标识符的所有数据元素的访问可以被阻挡,而不必在每个单独的数据元素上设置锁定。在附图标记930处,可以做出对交易的恢复完成的确定。根据一个实施例,当辅助日志中的中止的交易的回滚或撤消完成时,可以认为恢复完成。在附图标记940处,从交易标识符移除或释放锁定。在锁定被释放后,到对应版本的逻辑还原可以异步出现。此外,用户查询能够访问数据并且与数据交互。作为以上的备选方案,可以保持锁定,直到交易被标识为被提交或中止。在某些情况下,分析可以立即得出交易被中止的结论,因为可能需要访问外部交易管理器,在这种情况下,锁定是有用的。

本公开的方面涉及与数据库恢复相关联的处理时间和存储要求的技术问题。与解决这些问题相关联的技术特征包括:从最后一个成功检查点的开头重做用户交易,对用户操作进行版本控制,并且利用对应交易的标识符来标记版本,以及基于版本撤消用户操作。此外,针对逻辑系统和不能被版本控制的其他交易生成辅助日志。附加地,随着检查点出现,数据库交易日志可以连续地被截断,从而检查点之间将需要的存储空间减少到较小并且基本恒定的量。辅助日志也可以被截断以移除最旧活动交易之前的交易。

本公开支持执行或被配置成执行关于数据库恢复的各种动作的各种产品和过程。以下是一个或多个示例性系统和方法。

一种数据库恢复系统,包括:耦合到存储器的处理器,处理器被配置成执行存储器中存储的计算机可执行指令,计算机可执行指令在被执行时使处理器执行以下动作:确定在与数据库相关联的交易日志中标识的一个或多个交易的状态,其中数据库支持用户数据的版本控制;如由交易日志指定的,从最后一个成功检查点的开头开始到交易日志的结尾,顺序地重做一个或多个交易;以及将一个或多个交易中的一个或多个未被提交的交易标记为中止。系统还包括:标识与被标记为中止的交易标识符相关联的数据元素;以及将数据元素还原为先前提交版本。系统还包括获取辅助日志,辅助日志存储非版本控制的逻辑操作。此外,系统包括:在时间上从最旧活动交易开始到辅助日志的结尾,重做由辅助日志捕获的逻辑操作;以及从辅助日志的结尾到最旧活动交易,以相反的时间顺序撤消未被提交的逻辑操作。系统还包括在交易标识符上应用交易锁定,并且在撤消未被提交的逻辑操作完成之后释放交易锁定。系统还包括:基于最长活动交易来截断辅助日志,以及通过移除最近成功的检查点之前的交易来截断交易日志。系统还包括:从最旧脏页面或最后一个成功检查点的开头中的较早的一个开始,按照交易日志所指定的那样顺序地重做交易。

一种数据库恢复的方法,包括:采用至少一个处理器,处理器被配置成执行存储器中存储的计算机可执行指令,计算机可执行指令在被执行时使至少一个处理器执行以下动作:标识在数据库的交易日志中指定的活动交易和未被提交的交易,其中数据库存储用户数据的版本;从最后一个成功检查点的开头开始到交易日志的结尾,按照由交易日志所指定的那样顺序地重做一个或多个活动交易;以及将一个或多个交易中的一个或多个未被提交的交易标记为中止。方法还包括:标识与被标记为中止的交易标识符相关联的数据元素;以及将数据元素还原为先前保存版本。方法还包括:响应于接收到更新数据元素的请求来标识数据元素。方法还包括:在数据元素被还原为先前提交版本时,在交易标识符上应用交易锁定。方法还包括:生成辅助日志,辅助日志存储执行非版本控制操作的逻辑交易。此外,方法包括:从最旧活动逻辑交易开始,重做由辅助日志捕获的交易;以及从辅助日志的结尾到最旧活动逻辑交易,向后撤消未被提交的交易。方法还包括基于最近的检查点来截断交易日志。

一种数据库恢复的系统,包括:用于在数据库崩溃之后从交易日志标识活动且未被提交的交易的部件,其中数据库支持用户数据的版本控制;用于从最后一个成功检查点前进到交易日志的结尾重做一个或多个活动交易的部件;以及用于将一个或多个未被提交的交易标记为中止并且推迟撤消的部件。系统还包括用于标识与被标记为中止的交易标识符相关联的数据元素的部件,并且包括用于将该数据元素还原为该数据元素的先前保存版本的部件。系统还包括用于获取辅助日志的部件,辅助日志存储执行非版本控制操作的逻辑操作。附加地,系统包括用于从最旧活动交易开始到日志的结尾,向前重做由辅助日志捕获的交易的部件,并且包括用于从辅助日志的结尾到最旧活动交易,向后撤消未被提交的数据库交易的部件。

如本文中所使用的,术语“脏页面”是指已经在存储器中被修改但尚未被写入到非易失性存储装置(例如,写入在盘上)的数据的页面。该页面被称为脏页面,因为它与非易失性存储装置中的对应页面不同。例如,当一个页面从磁盘被读取到存储器中时,该页面是干净的。随后,该页面可以通过用户查询在存储器中被更新,并且被称为脏页面。

如本文中所使用的,术语“组件”和“系统”以及其各种形式(例如,组件、系统、子系统……)旨在指代计算机相关实体,或者是硬件、或者是硬件和软件的组合、或者是软件、或者是执行软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、实例、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以被本地化在一个计算机上和/或分布在两个或更多个计算机之间。

在本说明书和所附权利要求书中使用的连词“或”旨在表示包括性的“或”而不是排他性的“或”,除非另有说明或根据上下文很明确。换言之,“X”或“Y”旨在表示“X”和“Y”的任何包括性排列。例如,如果“‘A’采用‘X’”,“‘A’采用‘Y’”,以及“‘A’采用‘X’和‘Y’二者”,则在任何上述实例中,“‘A’采用‘X’或‘Y’”都满足。

此外,在详细描述或权利要求书中使用术语“包括(include)”、“包含(contain)”、“具有(has)”、“有(having)”或其形式的变体,这些术语旨在以与术语“包括(comprising)”当在权利要求中作为过渡词使用时被解释类似的方式是包括性的。

为了提供所公开的主题的上下文,图10以及以下讨论旨在提供可以实现所公开的主题的各个方面的合适环境的简要的一般描述。然而,合适的环境仅仅是一个示例,而不旨在暗示对使用范围或功能的任何限制。

虽然可以在一个或多个计算机上运行的程序的计算机可执行指令的一般上下文中描述以上公开的系统和方法,但是本领域技术人员将认识到,这些方面也可以结合其他程序模块等来实现。通常,程序模块包括执行特定任务和/或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域技术人员将理解,可以使用各种计算机系统配置来实践上述系统和方法,包括单处理器、多处理器或多核处理器计算机系统、微型计算设备、大型计算机、以及个人计算机、手持计算设备(例如,个人数字助理(PDA)、智能电话、平板、手表……)、基于微处理器或可编程消费者或工业电子设备等。各个方面也可以在分布式计算环境中实践,在分布式计算环境中,任务由通过通信网络链接的远程处理设备来执行。然而,所公开的主题的一些(如果不是全部)方面可以在独立的计算机上实践。在分布式计算环境中,程序模块可以位于本地和远程存储器设备中的一者或两者中。

参考图10,示出了示例通用计算机或计算设备1002(例如,台式计算机、笔记本计算机、平板计算机、手表、服务器、手持设备、可编程消费者或工业电子设备、机顶盒、游戏系统、计算节点……)。计算机1002包括一个或多个处理器1020、存储器1030、系统总线1040、一个或多个大容量存储设备1050和一个或多个接口组件1070。系统总线1040至少通信地耦合至少上述系统组成部分。然而,应当理解,在其最简单的形式中,计算机1002可以包括耦合到存储器1030的一个或多个处理器1020,其执行存储在存储器1030中的各种计算机可执行动作、指令和/或组件。

一个或多个处理器1020可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件、或者被设计用于执行本文中所描述的功能的其任何组合来实现。通用处理器可以是微处理器,但是在备选方案中,处理器可以是任何处理器、控制器、微控制器或状态机。一个或多个处理器1020还可以被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、多核处理器、一个或多个微处理器结合DSP核、或任何其他这种配置。在一个实施例中,一个或多个处理器可以是图形处理器。

计算机1002可以包括或以其他方式与各种计算机可读介质交互,以支持计算机1002的控制以实现所公开的主题的一个或多个方面。计算机可读介质可以是可以由计算机1002访问的任何可用介质,并且包括易失性和非易失性介质以及可移除和不可移除介质。计算机可读介质可以包括两种不同的和相互排斥的类型,即计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括存储设备,诸如存储器设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)……)、磁存储设备(例如硬盘、软盘、磁盒、磁带……)、光盘(例如,光盘(CD)、数字通用盘(DVD)……)和固态设备(例如固态驱动器(SSD)、闪存驱动器(例如卡、棒、密钥驱动器……)……)、或任何其他类似的介质,其与传输或通信相反,存储计算机1002可访问的所需信息。因此,计算机存储介质排除调制数据信号以及相对于通信介质描述的内容。

通信介质实施计算机可读指令、数据结构、程序模块、或者诸如载波或其他传输机制的调制数据信号中的其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指以其特征中的一个或多个以能够在信号中编码信息的方式来设置或更改的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、以及诸如声学、RF、红外和其他无线介质的无线介质。

存储器1030和一个或多个大容量存储设备1050是计算机可读存储介质的示例。取决于计算设备的确切配置和类型,存储器1030可以是易失性的(例如,RAM)、非易失性(例如,ROM、闪存……)、或两者的某种组合。作为示例,基本输入/输出系统(BIOS)(包括在诸如启动期间在计算机1002内的元件之间传送信息的基本例程)可以存储在非易失性存储器中,而易失性存储器可以用作外部高速缓存存储器,以支持一个或多个处理器1020等的处理。

一个或多个大容量存储设备1050包括用于相对于存储器1030存储大量数据的可移除/不可移除、易失性/非易失性计算机存储介质。例如,一个或多个大容量存储设备1050包括但不限于一个或多个设备,诸如磁盘或光盘驱动器、软盘驱动器、闪存、固态驱动器或记忆棒。

存储器1030和一个或多个大容量存储设备1050可以包括或存储有操作系统1060、一个或多个应用1062、一个或多个程序模块1064和数据1066。操作系统1060用于控制和分配计算机1002的资源。应用1062包括系统和应用软件中的一者或两者,并且可以通过程序模块1064和存储在存储器1030和/或一个或多个大容量存储设备1050中的数据1066来利用操作系统1060对资源的管理以执行一个或多个动作。因此,应用1062可以根据由此提供的逻辑将通用计算机1002转换成专用机器。

所公开的主题的所有或部分可以使用标准编程和/或工程技术来实现,以产生软件、固件、硬件或其任何组合,以控制计算机来实现所公开的功能。作为示例而非限制,数据库恢复系统100或其部分可以是或形成应用1062的一部分,并且包括存储在存储器和/或一个或多个大容量存储设备1050中的一个或多个模块1064和数据1066,模块1064和数据1066的功能在由一个或多个处理器1020执行时可以被实现。

根据一个特定实施例,一个或多个处理器1020可以对应于片上系统(SOC)或类似的架构,在单个集成电路基板上包括或换言之集成硬件和软件。这里,一个或多个处理器1020可以包括一个或多个处理器以及至少类似于一个或多个处理器1020和存储器1030的存储器等。传统处理器包括最少量的硬件和软件,并且广泛地依赖于外部硬件和软件。相比之下,处理器的SOC实现更加强大,因为其中嵌入有硬件和软件,其使得能够以最小或不依赖于外部硬件和软件来实现特定功能。例如,数据库恢复系统100和/或相关联的功能可以嵌入在SOC架构中的硬件内。

计算机1002还包括通信地耦合到系统总线1040并且支持与计算机1002的交互的一个或多个接口组件1070。作为示例,接口组件1070可以是端口(例如,串行、并行、PCMCIA、USB、FireWire……)或接口卡(例如,声音、视频……)等。在一个示例实现中,接口组件1070可以被实现为用户输入/输出接口,以使得用户能够向计算机1002中输入命令和信息,例如通过一个或多个手势或语音输入,通过一个或多个输入设备(例如,指示设备,诸如鼠标、轨迹球、触控笔、触摸板、键盘、麦克风、操纵杆、游戏垫、卫星天线、扫描仪、相机、其他计算机……)。在另一示例实现中,接口组件1070可以被实施为输出外围接口,以向显示器(例如LCD、LED、等离子体、有机发光二极管显示器(OLED)……)、扬声器、打印机和/或其他计算机等提供输出。此外,接口组件1070可以被实施为网络接口,以实现与其他计算设备(未示出)的通信,诸如通过有线或无线通信链路。

上面描述的内容包括所要求保护的主题的各个方面的示例。当然,为了描述所要求保护的主题的目的,不可能描述组件或方法的每个可想到的组合,但是本领域普通技术人员可以认识到,所公开的主题的很多另外的组合和排列是可能的。因此,所公开的主题旨在包含落在所附权利要求的精神和范围内的所有这种更改、修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号