[发明专利]记录事务日志的方法和数据库引擎有效
申请号: | 201310744292.5 | 申请日: | 2013-12-30 |
公开(公告)号: | CN103729442B | 公开(公告)日: | 2017-11-24 |
发明(设计)人: | 于巍;刘辉军;聂愿愿 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京三高永信知识产权代理有限责任公司11138 | 代理人: | 黄厚刚 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 记录 事务 日志 方法 数据库 引擎 | ||
技术领域
本发明涉及数据库技术领域,特别涉及一种记录事务日志的方法和数据库引擎。
背景技术
数据库的事务日志是用来记录数据库每一次修改活动的文件。事务日志是撤消事务和出现故障时恢复事务的依据。与普通系统日志不同,数据库的事务日志记录数据库系统变化时,需要保证顺序的一致性,在故障恢复时,也要求完全按照事务发生的顺序进行恢复。通常情况下,数据库系统都会为了减少输入输出,而采取WAL(Write-Ahead Logging,预写式日志)机制记录事务日志。WAL是指对数据文件的修改必须发生在这些修改已经记录了事务日志之后,也就是说,在描述这些变化的日志记录写入磁盘之后。
当数据库系统发生故障时,通过事务日志,将系统恢复到前一个一致性状态的过程叫数据库恢复。其中,通过重做Redo日志可以将已对系统做的修改重新做一次,以防止数据丢失。通过取消Undo日志可以取消发生故障时没有提交成功的修改,从而保证数据库的一致性。
目前,数据库的事务日志使用串行方式进行事务日志记录,并且使用单一缓存队列和单一日志文件保存事务日志。但是,串行方式使得事务日志写磁盘非常慢,而且单一缓存队列会出现在响应一个请求时资源被锁定而其它请求都必须等待解锁的情况,因此使得锁粒度大,从而导致数据库系统的可用性降低,用户体验差。
发明内容
本发明提供了一种记录事务日志的方法和数据库引擎,以提高数据库系统的性能,提升用户体验。
所述技术方案如下:
第一方面,提供了一种记录事务日志的方法,包括:
接收结构化查询语言SQL请求;
根据所述SQL请求,修改所述SQL请求对应的数据页;
为所述修改生成对应的事务日志;
对所述事务日志进行分区得到多个日志片段;
将所述多个日志片段写入到多个缓存队列中,并行将所述多个缓存队列中的日志片段写入到日志文件中。
结合上述第一方面,在第一种实施方式下,对所述事务日志进行分区得到多个日志片段;将所述多个日志片段写入到多个缓存队列中,并行将所述多个缓存队列中的日志片段写入到日志文件中,包括:
判断所述事务日志的类型;
如果所述事务日志的类型是并行执行日志,则对所述事务日志进行分区得到多个日志片段,将所述多个日志片段写入到多个并行执行的缓存队列中;
并行将所述多个缓存队列中的日志片段写入多个并行执行日志文件中;
其中,所述并行执行日志是指所述修改是不需要保证顺序的修改时生成的事务日志。
结合上述第一种实施方式,在第二种实施方式下,判断所述事务日志的类型之后,还包括:
如果所述事务日志的类型是优先执行日志,则将所述事务日志写入到优先执行的缓存队列中;
将所述优先执行的缓存队列中的所述事务日志写入优先执行日志文件中;
其中,所述优先执行日志是指所述修改是需要保证顺序的修改时生成的事务日志。
结合上述第一种实施方式,在第三种实施方式下,对所述事务日志进行分区得到多个日志片段,将所述多个日志片段写入到多个并行执行的缓存队列中,包括:
根据所述事务日志中的每条记录的文件号、页号和页内位置按照预设规则确定每条记录对应的并行执行的缓存队列;
并行将每条记录写入对应的缓存队列中;
其中,所述预设规则为与同一个数据页有关的记录对应到同一个并行执行的缓存队列中。
结合上述第三种实施方式,在第四种实施方式下,根据所述事务日志中的每条记录的文件号、页号和页内位置按照预设规则确定每条记录对应的并行执行的缓存队列,包括:
分别根据所述事务日志中的每条记录的文件号、页号和页内位置计算出所述事务日志中的每条记录的哈希值,在设置的哈希值与并行执行的缓存队列的对应关系中,分别查找得到所述事务日志中的每条记录的的哈希值所对应的并行执行的缓存队列。
结合上述第二种实施方式,在第五种实施方式下,所述方法还包括:
当进行故障恢复时,先根据所述优先执行日志文件执行恢复操作;
再根据所述多个并行执行日志文件并行执行恢复操作。
结合上述第一种实施方式,在第六种实施方式下,所述判断所述事务日志的类型,包括:
根据所述事务日志判断所述修改是否为需要保证顺序的修改;
如果所述修改是需要保证顺序的修改,则确定所述事务日志的类型为优先执行日志;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310744292.5/2.html,转载请声明来源钻瓜专利网。