一种管理数据库日志的方法及装置.pdf

上传人:n****g 文档编号:4041423 上传时间:2018-08-12 格式:PDF 页数:21 大小:1.39MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410791085.X

申请日:

2014.12.18

公开号:

CN104516959A

公开日:

2015.04.15

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 17/30申请日:20141218|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

杭州华为数字技术有限公司

发明人:

文继军; 徐文韬; 聂愿愿

地址:

310052浙江省杭州市滨江区滨兴路301号3幢A楼301室

优先权:

专利代理机构:

北京中博世达专利商标代理有限公司11274

代理人:

申健

PDF下载: PDF下载
内容摘要

本发明实施例提供一种管理数据库日志的方法及装置,涉及计算机领域,能够在不使用现有技术中的日志缓冲区和排它锁的情况下,对数据库系统中的数据库日志进行并行管理,可以提高数据库系统的并发性能。该方法包括:获取第一数据库日志和第一数据库日志存储地址,其中,第一数据库日志为多个事务在执行时任意一个事务生成的任意一条数据库日志,根据第一数据库日志存储地址,将第一数据库日志存储至非易失性存储器NVM,其中,NVM允许多个第一数据库日志并行存储。

权利要求书

权利要求书
1.  一种管理数据库日志的方法,其特征在于,包括:
获取第一数据库日志和第一数据库日志存储地址,其中,所述第 一数据库日志为多个事务在执行时任意一个事务生成的任意一条数据 库日志;
根据所述第一数据库日志存储地址,将所述第一数据库日志存储 至非易失性存储器NVM,其中,所述NVM允许多个所述第一数据库 日志并行存储。

2.  根据权利要求1所述的管理数据库日志的方法,其特征在于, 所述根据所述第一数据库日志存储地址,将所述第一数据库日志存储 至NVM之后,所述方法还包括:
若所述第一数据库日志为所述事务在执行时生成的第一条数据库 日志,则在活跃事务列表中添加第一事务记录,其中,所述活跃事务 列表用于记录当前正在执行的事务,所述第一事务记录至少包括所述 事务的标识和所述第一数据库日志存储地址;
若所述第一数据库日志不为所述事务在执行时生成的第一条数据 库日志,则将所述第一事务记录中的第二数据库日志存储地址更新为 所述第一数据库日志存储地址,其中,所述第二数据库日志为所述事 务在执行时生成的所述第一数据库日志的前一条数据库日志。

3.  根据权利要求2所述的管理数据库日志的方法,其特征在于, 所述在活跃事务列表中添加第一事务记录,或者所述将所述第一事务 记录中的第二数据库日志存储地址更新为所述第一数据库日志存储地 址之后,所述方法还包括:
在提交事务列表中添加第二事务记录,其中,所述提交事务列表 用于记录已经执行完毕的事务,所述第二事务记录至少包括所述事务 的标识和第三数据库日志存储地址,所述第三数据库日志为所述事务 执行完毕后生成的所有数据库日志中最后生成的一条数据库日志;
删除所述活跃事务列表中的第一事务记录。

4.  根据权利要求2所述的管理数据库日志的方法,其特征在于, 所述在活跃事务列表中添加第一事务记录,或者所述将所述第一事务 记录中的第二数据库日志存储地址更新为所述第一数据库日志存储地 址之后,所述方法还包括:
获取事务回滚信息;
根据所述事务回滚信息,对所述事务进行回滚,并删除所述NVM 内存储的所述事务在执行时生成的所有数据库日志,以及所述活跃事 务列表中的第一事务记录。

5.  根据权利要求3所述的管理数据库日志的方法,其特征在于, 所述在提交事务列表中添加第二事务记录之后,所述方法还包括:
获取事务恢复信息;
根据所述事务恢复信息,对所述事务进行恢复。

6.  根据权利要求1-5中任意一项所述的管理数据库日志的方法, 其特征在于,所述第三数据库日志至少包括第三日志序号;
所述方法还包括:
获取预设日志序号;
若所述事务已执行完毕,且所述第三日志序号小于等于所述预设 日志序号,则删除所述NVM内存储的所述事务在执行时生成的所有数 据库日志,以及所述提交事务列表中的第二事务记录。

7.  一种管理数据库日志的装置,其特征在于,包括:
第一获取模块,用于获取第一数据库日志和第一数据库日志存储 地址,其中,所述第一数据库日志为多个事务在执行时任意一个事务 生成的任意一条数据库日志;
存储模块,用于根据所述第一数据库日志存储地址,将所述第一 数据库日志存储至非易失性存储器NVM,其中,所述NVM允许多个 所述第一数据库日志并行存储。

8.  根据权利要求7所述的管理数据库日志的装置,其特征在于, 所述装置还包括:
第一添加模块,用于根据所述第一数据库日志存储地址,将所述 第一数据库日志存储至NVM之后,若所述第一数据库日志为所述事务 在执行时生成的第一条数据库日志,则在活跃事务列表中添加第一事 务记录,其中,所述活跃事务列表用于记录当前正在执行的事务,所 述第一事务记录至少包括所述事务的标识和所述第一数据库日志存储 地址;
更新模块,用于若所述第一数据库日志不为所述事务在执行时生 成的第一条数据库日志,则将所述第一事务记录中的第二数据库日志 存储地址更新为所述第一数据库日志存储地址,其中,所述第二数据 库日志为所述事务在执行时生成的所述第一数据库日志的前一条数据 库日志。

9.  根据权利要求8所述的管理数据库日志的装置,其特征在于, 所述装置还包括:
第二添加模块,用于所述在活跃事务列表中添加第一事务记录, 或者所述将所述第一事务记录中的第二数据库日志存储地址更新为所 述第一数据库日志存储地址之后,在提交事务列表中添加第二事务记 录,其中,所述提交事务列表用于记录已经执行完毕的事务,所述第 二事务记录至少包括所述事务的标识和第三数据库日志存储地址,所 述第三数据库日志为所述事务执行完毕后生成的所有数据库日志中最 后生成的一条数据库日志;
删除模块,用于在提交事务列表中添加第二事务记录之后,删除 所述活跃事务列表中的第一事务记录。

10.  根据权利要求8所述的管理数据库日志的装置,其特征在于, 所述装置还包括:
第二获取模块,用于所述在活跃事务列表中添加第一事务记录, 或者所述将所述第一事务记录中的第二数据库日志存储地址更新为所 述第一数据库日志存储地址之后,获取事务回滚信息;
执行模块,用于根据所述事务回滚信息,对所述事务进行回滚, 并删除所述NVM内存储的所述事务在执行时生成的所有数据库日志, 以及所述活跃事务列表中的第一事务记录。

11.  根据权利要求9所述的管理数据库日志的装置,其特征在于,
所述第二获取模块,还用于所述在提交事务列表中添加第二事务 记录之后,获取事务恢复信息;
所述执行模块,还用于根据所述事务恢复信息,对所述事务进行 恢复。

12.  根据权利要求7-11中任意一项所述的管理数据库日志的装置, 其特征在于,所述第三数据库日志至少包括第三日志序号;
所述第二获取模块,还用于获取预设日志序号;
所述执行模块,还用于若所述事务已执行完毕,且所述第三日志 序号小于等于所述预设日志序号,则删除所述NVM内存储的所述事务 在执行时生成的所有数据库日志,以及所述提交事务列表中的第二事 务记录。

说明书

说明书一种管理数据库日志的方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种管理数据库日志的方法及 装置。
背景技术
数据库日志是事务对数据库进行的各种操作的记录,是撤销事务 和出现故障时恢复事务的依据。与普通的系统日志不同,数据库日志 在记录数据库数据变化时,需要保证顺序的一致性,在故障恢复时, 也要求完全按照事务发生的顺序进行恢复。
现有技术中,完成数据库日志的管理需包括:日志缓冲区、日志 文件、后台日志写进程等。数据库系统在事务执行时将事务生成的数 据库日志记录到日志缓冲区,其中,一个事务包括至少一条数据库日 志,在事务执行完毕后,数据库系统将该事务在日志缓冲区中的数据 库日志写到磁盘的日志文件中,或者在一些特定时刻(例如,日志缓 冲区写满或者日志文件区写满)将日志缓冲区中已经执行完毕的事务 的数据库日志写到磁盘的日志文件中。
现有的数据库系统中,数据库日志在日志缓冲区中缓存,当数据 库日志从内存写入日志缓冲区或者从日志缓冲区写入磁盘时,必须获 取日志缓冲区的排它锁,该排它锁只有一个并且全局共享,即一个时 刻只允许一个进程对日志缓冲区进行读或写操作,因此在有多个进程 要对日志缓冲区进行读或写操作时,日志缓冲区的这种工作模式会成 为制约数据库系统性能的瓶颈。
发明内容
本发明的实施例提供一种管理数据库日志的方法及装置,能够在 不使用现有技术中的日志缓冲区和排它锁的情况下,对数据库系统中 的数据库日志进行并行管理,可以提高数据库系统的性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种管理数据库日志的方法,包括:
获取第一数据库日志和第一数据库日志存储地址,其中,所述第 一数据库日志为多个事务在执行时任意一个事务生成的任意一条数 据库日志;根据所述第一数据库日志存储地址,将所述第一数据库日 志存储至非易失性存储器NVM,其中,所述NVM允许多个所述第 一数据库日志并行存储。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根 据所述第一数据库日志存储地址,将所述第一数据库日志存储至 NVM之后,所述方法还包括:
若所述第一数据库日志为所述事务在执行时生成的第一条数据 库日志,则在活跃事务列表中添加第一事务记录,其中,所述活跃事 务列表用于记录当前正在执行的事务,所述第一事务记录至少包括所 述事务的标识和所述第一数据库日志存储地址;若所述第一数据库日 志不为所述事务在执行时生成的第一条数据库日志,则将所述第一事 务记录中的第二数据库日志存储地址更新为所述第一数据库日志存 储地址,其中,所述第二数据库日志为所述事务在执行时生成的所述 第一数据库日志的前一条数据库日志。
结合第一方面的第一种可能的实现方式中,在第一方面的第二种 可能的实现方式中,所述在活跃事务列表中添加第一事务记录,或者 所述将所述第一事务记录中的第二数据库日志存储地址更新为所述 第一数据库日志存储地址之后,所述方法还包括:
在提交事务列表中添加第二事务记录,其中,所述提交事务列表 用于记录已经执行完毕的事务,所述第二事务记录至少包括所述事务 的标识和第三数据库日志存储地址,所述第三数据库日志为所述事务 执行完毕后生成的所有数据库日志中最后生成的一条数据库日志;删 除所述活跃事务列表中的第一事务记录。
结合第一方面的第一种可能的实现方式中,在第一方面的第三种 可能的实现方式中,所述在活跃事务列表中添加第一事务记录,或者 所述将所述第一事务记录中的第二数据库日志存储地址更新为所述 第一数据库日志存储地址之后,所述方法还包括:
获取事务回滚信息;根据所述事务回滚信息,对所述事务进行回 滚,并删除所述NVM内存储的所述事务在执行时生成的所有数据库 日志,以及所述活跃事务列表中的第一事务记录。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可 能的实现方式中,所述在提交事务列表中添加第二事务记录之后,所 述方法还包括:
获取事务恢复信息;根据所述事务恢复信息,对所述事务进行恢 复。
结合第一方面或者第一方面的第一种可能的实现方式至第一方 面的第四种可能的实现方式中的任意一种,在第一方面的第五种可能 的实现方式中,所述第三数据库日志至少包括第三日志序号;所述方 法还包括:获取预设日志序号;若所述事务已执行完毕,且所述第三 日志序号小于等于所述预设日志序号,则删除所述NVM内存储的所 述事务在执行时生成的所有数据库日志,以及所述提交事务列表中的 第二事务记录。
第二方面,本发明实施例提供一种管理数据库日志的装置,包括:
第一获取模块,用于获取第一数据库日志和第一数据库日志存储 地址,其中,所述第一数据库日志为多个事务在执行时任意一个事务 生成的任意一条数据库日志;存储模块,用于根据所述第一数据库日 志存储地址,将所述第一数据库日志存储至非易失性存储器NVM, 其中,所述NVM允许多个所述第一数据库日志并行存储。
结合第二方面,在第二方面的第一种可能的实现方式中,所述装 置还包括:
第一添加模块,用于根据所述第一数据库日志存储地址,将所述 第一数据库日志存储至NVM之后,若所述第一数据库日志为所述事 务在执行时生成的第一条数据库日志,则在活跃事务列表中添加第一 事务记录,其中,所述活跃事务列表用于记录当前正在执行的事务, 所述第一事务记录至少包括所述事务的标识和所述第一数据库日志 存储地址;更新模块,用于若所述第一数据库日志不为所述事务在执 行时生成的第一条数据库日志,则将所述第一事务记录中的第二数据 库日志存储地址更新为所述第一数据库日志存储地址,其中,所述第 二数据库日志为所述事务在执行时生成的所述第一数据库日志的前 一条数据库日志。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可 能的实现方式中,所述装置还包括:
第二添加模块,用于所述在活跃事务列表中添加第一事务记录, 或者所述将所述第一事务记录中的第二数据库日志存储地址更新为 所述第一数据库日志存储地址之后,在提交事务列表中添加第二事务 记录,其中,所述提交事务列表用于记录已经执行完毕的事务,所述 第二事务记录至少包括所述事务的标识和第三数据库日志存储地址, 所述第三数据库日志为所述事务执行完毕后生成的所有数据库日志 中最后生成的一条数据库日志;删除模块,用于在提交事务列表中添 加第二事务记录之后,删除所述活跃事务列表中的第一事务记录。
结合第二方面的第一种可能的实现方式中,在第二方面的第三种 可能的实现方式中,所述装置还包括:
第二获取模块,用于所述在活跃事务列表中添加第一事务记录, 或者所述将所述第一事务记录中的第二数据库日志存储地址更新为 所述第一数据库日志存储地址之后,获取事务回滚信息;执行模块, 用于根据所述事务回滚信息,对所述事务进行回滚,并删除所述NVM 内存储的所述事务在执行时生成的所有数据库日志,以及所述活跃事 务列表中的第一事务记录。
结合第二方面的第二种可能的实现方式,在第二方面的第四种可 能的实现方式中,所述第二获取模块,还用于所述在提交事务列表中 添加第二事务记录之后,获取事务恢复信息;所述执行模块,还用于 根据所述事务恢复信息,对所述事务进行恢复。
结合第二方面或者第二方面的第一种可能的实现方式至第二方 面的第四种可能的实现方式中的任意一种,在第二方面的第五种可能 的实现方式中,所述第三数据库日志至少包括第三日志序号。
所述第二获取模块,还用于获取预设日志序号;所述执行模块, 还用于若所述事务已执行完毕,且所述第三日志序号小于等于所述预 设日志序号,则删除所述NVM内存储的所述事务在执行时生成的所 有数据库日志,以及所述提交事务列表中的第二事务记录。
本发明实施例提供一种管理数据库日志的方法及装置,包括:获 取第一数据库日志和第一数据库日志存储地址,其中,第一数据库日 志为事务在执行时生成的任意一条数据库日志;根据第一数据库日志 存储地址,将第一数据库日志存储至非易失性存储器NVM。
基于上述实施例的描述,采用NVM来存储数据库日志,由于 NVM的非易失性,使得数据库日志可以在NVM上长久保存,并且 由于本发明技术方案没有现有技术中的日志缓冲区,不存在排它锁, 因此,可以更加高效的对数据库日志进行并行管理,提高数据库系统 的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面 将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而 易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些 附图获得其他的附图。
图1为本发明实施例提供的一种管理数据库日志的方法流程示 意图一;
图2为本发明实施例提供的一种管理数据库日志的方法流程示 意图二;
图3为本发明实施例提供的一种管理数据库日志的方法流程示 意图三;
图4为本发明实施例提供的一种管理数据库日志的方法流程示 意图四;
图5为本发明实施例提供的一种管理数据库日志的方法流程示 意图五;
图6为本发明实施例提供的一种管理数据库日志的装置的结构 示意图一;
图7为本发明实施例提供的一种管理数据库日志的装置的结示 意构图二;
图8为本发明实施例提供的一种管理数据库日志的装置的结示 意构图三;
图9为本发明实施例提供的一种管理数据库日志的装置的结示 意构图四;
图10为本发明实施例提供的一种管理数据库日志的装置的结示 意构图五。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方 案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部 分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普 通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都 属于本发明保护的范围。
实施例一
本发明实施例提供一种管理数据库日志的方法,如图1所示,为 该方法的流程示意图,包括:
S101、数据库系统获取第一数据库日志和第一数据库日志存储地 址。
其中,第一数据库日志为多个事务在执行时任意一个事务生成的 任意一条数据库日志。
需要说明的是,数据库系统中有多个事务进程并发执行,在对多 个事务生成的数据库日志进行存储时,获取任意一个事务生成的任意 一条数据库日志,并将其存储至NVM中。NVM可以允许多个事务 进程同时进行写操作,将多个数据库日志进行存储,从而提高数据库 系统的并发性能。
事务生成数据库日志之后,数据库系统需要将事务生成的数据库 日志进行存储,而数据库系统在存储数据库日志时需要知道数据库日 志的存储地址,因此,数据库系统在记录事务生成的数据库日志时, 要获取第一数据库日志和第一数据库日志存储地址。
需要说明的是,一个事务至少生成一条数据库日志,当一个事务 生成多条数据库日志时,数据库系统要保证存储事务生成的数据库日 志的顺序要与事务实际生成数据库日志的顺序一致。这样,才能保证 在数据库日志进行回滚或者恢复时的正确性。
示例性的,数据库系统通过LSN(log sequence number,日志序 号)的方式保证数据库日志的有序性。其中LSN为单调递增的整数, 每一条数据库日志在存储时,都会附带上数据库系统为其生成的 LSN。LSN的生成方式可以是中心维护,也可以是使用某些算法(例 如Lamport)生成,或者采用高精度时钟以及相应的和时钟相关的时 钟算法等方法生成。
还需要说明的是,在多个事务并发执行时,数据库系统为多个事 务交叉生成日志序号,示例性的,第一事务当前一条数据库日志的 LSN为20000,且第一事务还没有提交,还在继续执行,此时,有第 二事务,生成了一条数据库日志,则数据库系统为第二事务生成的该 条数据库日志生成的LSN为20001,此时,第一事务又生成了一条数 据库日志,则数据库系统为第一事务的该条数据库日志生成的LSN 为20002。即可能属于同一个事务的各个数据库日志的LSN不是连续 编号的,但是的属于同一个事务的各个数据库日志的LSN仍然是单 调递增的,可以保证记录该事务各个数据库日志的顺序与执行该事务 时生成的各个数据库日志的顺序是一致的。
S102、数据库系统根据第一数据库日志存储地址,将第一数据库 日志存储至NVM。
其中,NVM允许多个第一数据库日志并行存储。
需要说明的是,在本发明技术方案中,如果有一个事务正在执行, 并且数据库系统中是的事务进程将其生成的数据库日志存储在NVM 中;同时,又有其他事务也在执行,并且生成了数据库日志,则数据 库系统中的事务进程可以将该事务生成的数据库日志也存储在NVM 中,使得多个正在执行的事务对NVM进行并行操作。
在本发明技术方案中,数据库日志是存储在NVM(non-volatile  memory,非易失性存储器)中的,NVM是指当电源关掉后,所存储 的数据不会丢失的存储器。依据NVM内的数据是否能够随时改写, NVM可以分为ROM(read-only memory,只读存储器)和Flash memory (闪存)。其中,ROM又包括:PROM(programmable read-only  memory,可编程只读存储器)、EAROM(electrically alterable read-only  memory,电可改写只读存储器)、EPROM(erasable programmable  read-only memory,可擦可编程只读存储器)和EEPROM(electrically  erasable programmable read-only memory,电可擦可编程只读存储器)。 还有一种NVM,它集成了普通DDR(double data rate)RAM和非易 失性FLASH芯片的内存条,称为NVDIMM(non-volatile dual inline  memory module,非易失性双列直插式存储模块),在系统异常掉电 后,NVDIMM借助其后备超级电容作为动力源,在短时间内将数据 放入FLASH芯片,从而永久保存内存中的数据。本方案中的NVM 可以是任意一种NVM。
示例性的,数据库系统在NVM中存储数据库日志时,可以通过 两种方式来存储。具体的,第一种方式为:当一个事务开始启动后, 数据库系统在NVM上为该事务分配一段存储空间,用来存储该事务 在执行过程中生成的所有数据库日志,一般的,这种方式分配的NVM 空间比较大,因此,该事务生成的数据库日志可以连续存储,每一条 数据库日志的存储地址是物理连续的;因此,数据库系统在获取该事 务的第一数据库日志和第一数据库日志的存储地址后,将该事务生成 的第一数据库日志存储在NVM中,并且在第一数据库日志存储时, 数据库系统至少会为该第一数据库日志的日志记录中添加该第一数 据库日志的LSN和该第一数据库日志的存储地址。第二种方式为: 数据库系统为一个事务在执行过程中生成的第一数据库日志分配存 储空间,当该事务生成下一条数据库日志时,数据库系统再为其分配 存储空间,即该事务在执行时生成的数据库日志在NVM中的存储地 址有可能不是物理连续的,但是该事务的每一条数据库日志的日志记 录中都保存了其上一条数据库日志的存储地址,以使得该事务在执行 时生成的所有数据库日志以链表的形式相互联系起来。
需要说明的是,本发明技术方案中,数据库系统将事务在执行时 生成的数据库日志存储在NVM中,由于数据库系统对NVM的管理 不需要现有技术中的日志缓冲区,当数据库系统对其进行读写操作 时,必须获得日志缓冲区的排它锁,并且一个时刻只有一个事务进程 会获得日志缓冲区的排它锁,而本发明中的NVM可以允许多个事务 进程同时进行读写操作,在事务并发量比较大时,可以大大提高数据 库系统的性能。
进一步的,因为NVM的非易失性,事务生成的数据库日志可以 在NVM上长久保存,而不用像现有技术那样,需要将日志缓冲区中 的数据库日志频繁的写入磁盘,以使得数据库日志长久保存,满足事 务执行的持久性。
通过上述描述,可以理解的是,现有技术中数据库系统对数据库 日志的管理为将事务在执行时生成的数据库日志暂时存入日志缓冲 区,日志缓冲区再将数据库日志写入磁盘长久保存;而本发明技术方 案中,数据库系统直接将事务在执行时生成的数据库日志存入NVM 中长久保存。
需要说明的是,本发明技术方案提供的管理数据库日志的方法可 以应用于各种集群或者分布式数据库,以及OLTP(on-line transaction  processing,联机事务处理)系统中。
本发明实施例提供一种管理数据库日志的方法,包括:获取第一 数据库日志和第一数据库日志存储地址,其中,第一数据库日志为事 务在执行时生成的数据库日志中的任意一条数据库日志;根据第一数 据库日志存储地址,将第一数据库日志存储至非易失性存储器NVM。
基于上述实施例的描述,采用NVM来存储数据库日志,由于 NVM的非易失性,使得数据库日志可以在NVM上长久保存,并且 由于本发明技术方案没有现有技术中的日志缓冲区,不存在排它锁, 因此,可以更加高效的对数据库日志进行并行管理,提高数据库系统 的性能。
实施例二
本发明实施例提供一种管理数据库日志的方法,如图2所示,为 该方法的流程示意图,包括:
S201、数据库系统获取第一数据库日志和第一数据库日志存储地 址。
其中,第一数据库日志为事务在执行时生成的数据库日志中的任 意一条数据库日志。
需要说明的是,本发明提供的技术方案应用于多个事务并行的场 合,因为在本发明技术方案中,多个进程可以同时对NVM进行读写, 并且多个事务的进程是独立的,因此,在本发明实施例中以一个事务 的执行过程对本发明技术方案进行详细描述。
S202、数据库系统根据第一数据库日志存储地址,将第一数据库 日志存储至非易失性存储器NVM。
首先,数据库系统获取事务在执行时生成的第一数据库日志和第 一数据库日子存储地址,并根据第一数据库日志存储地址将第一数据 库日志记录在NVM中。
S203、若第一数据库日志为事务在执行时生成的第一条数据库日 志,则数据库系统在活跃事务列表中添加第一事务记录。
其中,活跃事务列表用于记录当前正在执行的事务,第一事务记 录至少包括事务的标识和第一数据库日志存储地址。
为了对数据库日志进行有效的管理,数据库系统还需要在NVM 上维护两个事务列表,包括:活跃事务列表和提交事务列表。具体的, 活跃事务列表用于记录当前正在执行的事务。
需要补充的是,数据库系统维护的两个事务列表:活跃事务列表 和提交事务列表也可以不存储在NVM中,数据库系统可以将这两个 事务列表在任何可以存储数据的存储器中进行维护。
当第一数据库日志为事务在执行时生成的第一条数据库日志时, 则说明该事务刚开始执行,在活跃事务列表中还不存在该事务的活跃 事务列表,因此,在活跃事务列表中添加第一事务记录,第一事务记 录中包括该事务的标识和该事务的第一条数据库日志(即第一数据库 日志)的存储地址。
S204、若第一数据库日志不为事务在执行时生成的第一条数据库 日志,则数据库系统将第一事务记录中的第二数据库日志存储地址更 新为第一数据库日志存储地址。
其中,第二数据库日志为事务在执行时生成的第一数据库日志的 前一条数据库日志。
在该事务继续执行的过程中,将会生成其他数据库日志。
当第一数据库日志不是该事务执行时生成的第一条数据库日志 时,则需要更新活跃事务列表中该事务的第一事务记录,具体的,将 第一事务记录中的第二数据库日志存储地址更新为第一数据库日志 存储地址。即事务在执行过程中,活跃事务列表中的第一事务记录只 记录该事务最新生成的一条数据库日志的信息,示例性的,可以记录 该事务最新生成的一条数据库日志的存储地址,因为事务在执行过程 中生成的每一条数据库日志的日志记录中都保存了该日志的上一条 日志的存储地址,因此,当事务发生回滚时,可以通过活跃事务列表 中记录的最新的数据库日志的信息,回溯找到该事务的所有数据库日 志记录。
S205、数据库系统在提交事务列表中添加第二事务记录。
其中,提交事务列表用于记录已经执行完毕的事务,第二事务记 录至少包括事务的标识和第三数据库日志存储地址,第三数据库日志 为事务执行完毕后生成的所有数据库日志中最后生成的一条数据库 日志。
当一个事务执行完毕,数据库系统会对该事务进行事务提交操 作,即将该执行完毕的事务的最后一条数据库日志进行记录,在提交 事务列表中添加该事务的第二事务记录,第二事务记录中包括了该事 务的标识以及该事务的第三数据库日志(最后一条数据库日志)的存 储地址。
S206、数据库系统删除活跃事务列表中的第一事务记录。
事务已经执行完毕后,就不属于当前活跃的事务,因此,需要将 该事务在活跃事务列表中的第一事务记录删除。
需要说明的是,S205和S206的执行没有先后顺序,即可以在删 除该事务在活跃事务列表中的第一事务记录后,再在提交事务列表中 添加将该事务的第二事务记录;或者,在提交事务列表中添加该事务 的第二事务记录后,再删除该事务在活跃事务列表中的第一事务记 录。
需要补充的是,数据库系统会对提交事务列表中的数据库日志记 录进行定期删除,具体的,当提交的事务对数据库所做的修改已经保 存在数据库之后,就可以对提交事务列表中的数据库日志记录进行删 除,或者在将NVM中的数据库日志进行回收或者删除时,同时删除 对应的事务在提交事务列表中的信息。
如图3所示,该管理数据库日志的方法还可以包括:
S207、数据库系统获取预设日志序号。
S208、若事务已执行完毕,且第三日志序号小于等于预设日志序 号,则数据库系统删除NVM内存储的事务在执行时生成的所有数据 库日志,以及提交事务列表中的第二事务记录。
其中,第三日志序号为第三数据库日志的日志序号,并且第三数 据库日志为事务执行完毕后生成的所有数据库日志中最后生成的一 条数据库日志。
需要说明的是,当数据库系统发生检查点时,可选的,数据库系 统可以获取预设的日志序号,以获取的预设日志序号作为检查点发生 的界限,对日志序号小于预设日志序号的所有已经提交的数据库日志 进行回收或者删除,从而使得回收或者删除的数据库日志所占用的存 储空间可以被再次利用,同时删除提交事务列表中相应的事务的第二 事务记录。
还需要说明的是,如果预设日志序号大于当前正在执行的事务已 经生成的任意一条数据库日志的日志序号,则数据库系统将保留当前 正在执行的事务的所有数据库日志记录。
可选的,S207和S208是在数据库系统发生检查点时才需要的步 骤,并不是所有事务执行时所必须的。
本发明实施例提供另一种管理数据库日志的方法,如图4所示, 为该方法的流程示意图,包括:
S301、数据库系统获取第一数据库日志和第一数据库日志存储地 址。
其中,第一数据库日志为事务在执行时生成的任意一条数据库日 志。
S302、数据库系统根据第一数据库日志存储地址,将第一数据库 日志存储至非易失性存储器NVM。
S303、若第一数据库日志为事务在执行时生成的第一条数据库日 志,则数据库系统在活跃事务列表中添加第一事务记录。
其中,活跃事务列表用于记录当前正在执行的事务,第一事务记 录至少包括事务的标识和第一数据库日志存储地址。
S304、若第一数据库日志不为事务在执行时生成的第一条数据库 日志,则数据库系统将第一事务记录中的第二数据库日志存储地址更 新为第一数据库日志存储地址。
其中,第二数据库日志为事务在执行时生成的第一数据库日志的 前一条数据库日志。
需要说明的是,S301-S304与上述S201-S204的描述相同,此处 不再赘述。
S305、数据库系统获取事务回滚信息。
需要说明的是,一个事务在提交之前,即一个事务在执行过程中 可能会发生事务回滚。事务回滚即对当前正在执行的事务已经执行的 操作进行撤销,并删除当前正在执行的事务生成的所有数据库日志记 录。
S306、数据库系统根据事务回滚信息,对事务进行回滚,并删除 NVM内存储的事务在执行时生成的所有数据库日志,以及活跃事务 列表中的第一事务记录。
事务在执行过程中,数据库系统发生异常或者各种故障时,会导 致该正在执行的事务发生回滚。正在执行的事务发生回滚时,数据库 系统需要删除NVM内存储的正在执行的事务生成的所有数据库日 志,同时,还需要在活跃事务列表中删除该事务的第一事务记录,事 务发生回滚即认为该事务从未执行。
示例性的,数据库系统发生异常时,当前正在执行的数据生成了 三条数据库日志,在活跃事务列表中记录了第三条数据库日志的存储 地址,因此,数据库系统可以根据活跃事务列表中记录的第三条数据 库日志,在NVM中找到该事务存储的第三条数据库日志,根据第三 条数据库日志中记录的上一条数据库日志的存储地址找到该事务存 储的第二条数据库日志,进而找到该事务的第一条数据库日志,并将 它们全部删除,以使得没有成功提交的事务所生成的数据库日志全部 回滚,即认为该事务从未被执行。
本发明实施例提供另一种管理数据库日志的方法,如图5所示, 为该方法的流程示意图,包括:
S401、数据库系统获取第一数据库日志和第一数据库日志存储地 址。
其中,第一数据库日志为事务在执行时生成的数据库日志中的任 意一条数据库日志。
S402、数据库系统根据第一数据库日志存储地址,将第一数据库 日志存储至非易失性存储器NVM。
S403、若第一数据库日志为事务在执行时生成的第一条数据库日 志,则数据库系统在活跃事务列表中添加第一事务记录。
其中,活跃事务列表用于记录当前正在执行的事务,第一事务记 录至少包括事务的标识和第一数据库日志存储地址。
S404、若第一数据库日志不为事务在执行时生成的第一条数据库 日志,则数据库系统将第一事务记录中的第二数据库日志存储地址更 新为第一数据库日志存储地址。
其中,第二数据库日志为事务在执行时生成的第一数据库日志的 前一条数据库日志。
S405、数据库系统在提交事务列表中添加第二事务记录。
其中,提交事务列表用于记录已经执行完毕的事务,第二事务记 录至少包括事务的标识和第三数据库日志存储地址,第三数据库日志 为事务执行完毕后生成的所有数据库日志中最后生成的一条数据库 日志。
S406、数据库系统删除活跃事务列表中的第一事务记录。
需要说明的是,S401-S406与上述S201-S206的描述相同,在此 不再赘述。
S407、数据库系统获取事务恢复信息。
S408、数据库系统根据事务恢复信息,对事务进行恢复。
需要说明的是,事务在执行完毕并提交后,且在事务生成的数据 库日志写入数据库之前,如果数据库系统发生异常,则在数据库系统 重启时,需要进行数据库恢复。即按照事务在执行时生成数据库日志 的顺序对数据库进行恢复。
示例性的,当事务在执行完毕并提交后,且在事务生成的数据库 日志写入数据库之前,如果数据库系统发生异常时,数据库系统在重 启时,就会对数据库进行恢复,具体的,如果有多个提交的事务,都 没有写入数据库,则数据库系统根据提交事务列表中的第二事务记录 获取所有提交事务的数据库日志,根据日志序号的先后顺序对这些事 务进行恢复,以使得数据库系统中数据的信息与实际执行的结果保持 一致,需要说明的是,由于多个事务在执行时有可能是交叉执行的, 因此它们的日志序号也是交叉的,在进行数据库恢复时,是按照日志 序号单调连续递增的顺序恢复的,比如,数据库系统需要对两个事务 进行恢复,其中,第一事务提交时生成了3条数据库日志,日志序号 分别为20000,20003,20004;第二事务提交时生成了4条数据库日志, 日志序号分别为20001,20002,20005,20006;在数据库系统恢复时,按 照日志序号为20000,20001,20002,20003,20004,20005,20006的顺序对 这两个事务对数据库的修改过程进行恢复。即数据库系统在恢复时, 是根据日志序号从小到大的顺序对所有需要恢复的事务的数据库日 志进行恢复的。
本发明实施例提供一种管理数据库日志的方法,包括:获取第一 数据库日志和第一数据库日志存储地址,其中,第一数据库日志为事 务在执行时生成的数据库日志中的任意一条数据库日志;根据第一数 据库日志存储地址,将第一数据库日志存储至非易失性存储器NVM。
基于上述实施例的描述,采用NVM来存储数据库日志,由于 NVM的非易失性,使得数据库日志可以在NVM上长久保存,并且 由于本发明技术方案没有现有技术中的日志缓冲区,不存在排它锁, 因此,可以更加高效的对数据库日志进行并行管理,提高数据库系统 的性能。
实施例三
本发明实施例提供一种管理数据库日志的装置,如图6所示,包 括:
第一获取模块10,用于获取第一数据库日志和第一数据库日志 存储地址,其中,第一数据库日志为多个事务在执行时任意一个事务 生成的任意一条数据库日志。
存储模块11,用于根据第一数据库日志存储地址,将第一数据 库日志存储至非易失性存储器NVM,其中,NVM允许多个第一数据 库日志并行存储。
如图7所示,该装置还包括:
第一添加模块12,用于根据第一数据库日志存储地址,将第一 数据库日志存储至NVM之后,若第一数据库日志为事务在执行时生 成的第一条数据库日志,则在活跃事务列表中添加第一事务记录,其 中,活跃事务列表用于记录当前正在执行的事务,第一事务记录至少 包括事务的标识和第一数据库日志存储地址。
更新模块13,用于若第一数据库日志不为事务在执行时生成的 第一条数据库日志,则将第一事务记录中的第二数据库日志存储地址 更新为第一数据库日志存储地址,其中,第二数据库日志为事务在执 行时生成的第一数据库日志的前一条数据库日志。
如图8所示,该装置还包括:
第二添加模块14,用于在活跃事务列表中添加第一事务记录, 或者将第一事务记录中的第二数据库日志存储地址更新为第一数据 库日志存储地址之后,在提交事务列表中添加第二事务记录,其中, 提交事务列表用于记录已经执行完毕的事务,第二事务记录至少包括 事务的标识和第三数据库日志存储地址,第三数据库日志为事务执行 完毕后生成的所有数据库日志中最后生成的一条数据库日志。
删除模块15,用于在提交事务列表中添加第二事务记录之后, 删除活跃事务列表中的第一事务记录。
如图9所示,该装置还包括:
第二获取模块16,用于在活跃事务列表中添加第一事务记录, 或者将第一事务记录中的第二数据库日志存储地址更新为第一数据 库日志存储地址之后,获取事务回滚信息。
执行模块17,用于根据事务回滚信息,对事务进行回滚,并删 除NVM内存储的事务在执行时生成的所有数据库日志,以及活跃事 务列表中的第一事务记录。
第二获取模块16,还用于在提交事务列表中添加第二事务记录 之后,获取事务恢复信息。
执行模块17,还用于根据事务恢复信息,对事务进行恢复。
第三数据库日志至少包括第三日志序号。
第二获取模块16,还用于获取预设日志序号。
执行模块17,还用于若事务已执行完毕,且第三日志序号小于 等于预设日志序号,则删除NVM内存储的事务在执行时生成的所有 数据库日志,以及提交事务列表中的第二事务记录。
本发明实施例提供一种管理数据库日志的装置,包括:第一获取 模块,获取第一数据库日志和第一数据库日志存储地址,其中,第一 数据库日志为事务在执行时生成的数据库日志中的任意一条数据库 日志;存储模块,根据第一数据库日志存储地址,将第一数据库日志 存储至非易失性存储器NVM。
基于上述实施例的描述,采用NVM来存储数据库日志,由于 NVM的非易失性,使得数据库日志可以在NVM上长久保存,并且 由于本发明技术方案没有现有技术中的日志缓冲区,不存在排它锁, 因此,可以更加高效的对数据库日志进行并行管理,提高数据库系统 的性能。
实施例四
本发明实施例提供一种管理数据库日志的装置,如图10所示, 包括:
处理器20,用于获取第一数据库日志和第一数据库日志存储地 址,其中,第一数据库日志为多个事务在执行时任意一个事务生成的 任意一条数据库日志。
NVM(非易失性存储器)21,用于存储第一数据库日志,活跃 事务列表和提交事务列表,其中,NVM允许多个第一数据库并行存 储。
处理器20,还用于根据第一数据库日志存储地址,将第一数据 库日志存储至NVM之后,若第一数据库日志为事务在执行时生成的 第一条数据库日志,则在活跃事务列表中添加第一事务记录,其中, 活跃事务列表用于记录当前正在执行的事务,第一事务记录至少包括 事务的标识和第一数据库日志存储地址。
处理器20,还用于若第一数据库日志不为事务在执行时生成的 第一条数据库日志,则将第一事务记录中的第二数据库日志存储地址 更新为第一数据库日志存储地址,其中,第二数据库日志为事务在执 行时生成的第一数据库日志的前一条数据库日志。
处理器20,还用于在活跃事务列表中添加第一事务记录,或者 将第一事务记录中的第二数据库日志存储地址更新为第一数据库日 志存储地址之后,在提交事务列表中添加第二事务记录,其中,提交 事务列表用于记录已经执行完毕的事务,第二事务记录至少包括事务 的标识和第三数据库日志存储地址,第三数据库日志为事务执行完毕 后生成的所有数据库日志中最后生成的一条数据库日志。
处理器20,还用于在提交事务列表中添加第二事务记录之后, 删除活跃事务列表中的第一事务记录。
处理器20,还用于在活跃事务列表中添加第一事务记录,或者 将第一事务记录中的第二数据库日志存储地址更新为第一数据库日 志存储地址之后,获取事务回滚信息。
处理器20,还用于根据事务回滚信息,对事务进行回滚,并删 除NVM内存储的事务在执行时生成的所有数据库日志,以及活跃事 务列表中的第一事务记录。
处理器20,还用于在提交事务列表中添加第二事务记录之后, 获取事务恢复信息。
处理器20,还用于根据事务恢复信息,对事务进行恢复。
第三数据库日志至少包括第三日志序号。
处理器20,还用于获取预设日志序号。
处理器20,还用于若事务已执行完毕,且第三日志序号小于等 于预设日志序号,则删除NVM内存储的事务在执行时生成的所有数 据库日志,以及提交事务列表中的第二事务记录。
本发明实施例提供一种管理数据库日志的方法,包括:处理器, 获取第一数据库日志和第一数据库日志存储地址,其中,第一数据库 日志为事务在执行时生成的数据库日志中的任意一条数据库日志;根 据第一数据库日志存储地址,将第一数据库日志存储至非易失性存储 器NVM。
基于上述实施例的描述,采用NVM来存储数据库日志,由于 NVM的非易失性,使得数据库日志可以在NVM上长久保存,并且 由于本发明技术方案没有现有技术中的日志缓冲区,不存在排它锁, 因此,可以更加高效的对数据库日志进行并行管理,提高数据库系统 的性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部 分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于 一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实 施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘 等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并 不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范 围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。 因此,本发明的保护范围应以所述权利要求的保护范围为准。

一种管理数据库日志的方法及装置.pdf_第1页
第1页 / 共21页
一种管理数据库日志的方法及装置.pdf_第2页
第2页 / 共21页
一种管理数据库日志的方法及装置.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《一种管理数据库日志的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种管理数据库日志的方法及装置.pdf(21页珍藏版)》请在专利查询网上搜索。

本发明实施例提供一种管理数据库日志的方法及装置,涉及计算机领域,能够在不使用现有技术中的日志缓冲区和排它锁的情况下,对数据库系统中的数据库日志进行并行管理,可以提高数据库系统的并发性能。该方法包括:获取第一数据库日志和第一数据库日志存储地址,其中,第一数据库日志为多个事务在执行时任意一个事务生成的任意一条数据库日志,根据第一数据库日志存储地址,将第一数据库日志存储至非易失性存储器NVM,其中,NV。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1