[发明专利]一种管理数据库日志的方法及装置有效
申请号: | 201410791085.X | 申请日: | 2014-12-18 |
公开(公告)号: | CN104516959B | 公开(公告)日: | 2018-01-02 |
发明(设计)人: | 文继军;徐文韬;聂愿愿 | 申请(专利权)人: | 杭州华为数字技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京中博世达专利商标代理有限公司11274 | 代理人: | 申健 |
地址: | 310052 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 管理 数据库 日志 方法 装置 | ||
技术领域
本发明涉及计算机领域,尤其涉及一种管理数据库日志的方法及装置。
背景技术
数据库日志是事务对数据库进行的各种操作的记录,是撤销事务和出现故障时恢复事务的依据。与普通的系统日志不同,数据库日志在记录数据库数据变化时,需要保证顺序的一致性,在故障恢复时,也要求完全按照事务发生的顺序进行恢复。
现有技术中,完成数据库日志的管理需包括:日志缓冲区、日志文件、后台日志写进程等。数据库系统在事务执行时将事务生成的数据库日志记录到日志缓冲区,其中,一个事务包括至少一条数据库日志,在事务执行完毕后,数据库系统将该事务在日志缓冲区中的数据库日志写到磁盘的日志文件中,或者在一些特定时刻(例如,日志缓冲区写满或者日志文件区写满)将日志缓冲区中已经执行完毕的事务的数据库日志写到磁盘的日志文件中。
现有的数据库系统中,数据库日志在日志缓冲区中缓存,当数据库日志从内存写入日志缓冲区或者从日志缓冲区写入磁盘时,必须获取日志缓冲区的排它锁,该排它锁只有一个并且全局共享,即一个时刻只允许一个进程对日志缓冲区进行读或写操作,因此在有多个进程要对日志缓冲区进行读或写操作时,日志缓冲区的这种工作模式会成为制约数据库系统性能的瓶颈。
发明内容
本发明的实施例提供一种管理数据库日志的方法及装置,能够在不使用现有技术中的日志缓冲区和排它锁的情况下,对数据库系统中的数据库日志进行并行管理,可以提高数据库系统的性能。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种管理数据库日志的方法,包括:
获取第一数据库日志和第一数据库日志存储地址,其中,所述第一数据库日志为多个事务在执行时任意一个事务生成的任意一条数据库日志;根据所述第一数据库日志存储地址,将所述第一数据库日志存储至非易失性存储器NVM,其中,所述NVM允许多个所述第一数据库日志并行存储。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述第一数据库日志存储地址,将所述第一数据库日志存储至NVM之后,所述方法还包括:
若所述第一数据库日志为所述事务在执行时生成的第一条数据库日志,则在活跃事务列表中添加第一事务记录,其中,所述活跃事务列表用于记录当前正在执行的事务,所述第一事务记录至少包括所述事务的标识和所述第一数据库日志存储地址;若所述第一数据库日志不为所述事务在执行时生成的第一条数据库日志,则将所述第一事务记录中的第二数据库日志存储地址更新为所述第一数据库日志存储地址,其中,所述第二数据库日志为所述事务在执行时生成的所述第一数据库日志的前一条数据库日志。
结合第一方面的第一种可能的实现方式中,在第一方面的第二种可能的实现方式中,所述在活跃事务列表中添加第一事务记录,或者所述将所述第一事务记录中的第二数据库日志存储地址更新为所述第一数据库日志存储地址之后,所述方法还包括:
在提交事务列表中添加第二事务记录,其中,所述提交事务列表用于记录已经执行完毕的事务,所述第二事务记录至少包括所述事务的标识和第三数据库日志存储地址,所述第三数据库日志为所述事务执行完毕后生成的所有数据库日志中最后生成的一条数据库日志;删除所述活跃事务列表中的第一事务记录。
结合第一方面的第一种可能的实现方式中,在第一方面的第三种可能的实现方式中,所述在活跃事务列表中添加第一事务记录,或者所述将所述第一事务记录中的第二数据库日志存储地址更新为所述第一数据库日志存储地址之后,所述方法还包括:
获取事务回滚信息;根据所述事务回滚信息,对所述事务进行回滚,并删除所述NVM内存储的所述事务在执行时生成的所有数据库日志,以及所述活跃事务列表中的第一事务记录。
结合第一方面的第二种可能的实现方式,在第一方面的第四种可能的实现方式中,所述在提交事务列表中添加第二事务记录之后,所述方法还包括:
获取事务恢复信息;根据所述事务恢复信息,对所述事务进行恢复。
结合第一方面或者第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中的任意一种,在第一方面的第五种可能的实现方式中,所述第三数据库日志至少包括第三日志序号;所述方法还包括:获取预设日志序号;若所述事务已执行完毕,且所述第三日志序号小于等于所述预设日志序号,则删除所述NVM内存储的所述事务在执行时生成的所有数据库日志,以及所述提交事务列表中的第二事务记录。
第二方面,本发明实施例提供一种管理数据库日志的装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华为数字技术有限公司,未经杭州华为数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410791085.X/2.html,转载请声明来源钻瓜专利网。