[发明专利]处理数据库重做数据的方法和装置有效
申请号: | 201310101317.X | 申请日: | 2013-03-26 |
公开(公告)号: | CN103150149A | 公开(公告)日: | 2013-06-12 |
发明(设计)人: | 王南 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F11/14 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 处理 数据库 重做 数据 方法 装置 | ||
技术领域
本发明涉及通信网络技术领域,尤其涉及处理数据库重做数据的方法和装置。
背景技术
重做日志(redo log)是数据库操作中数据可靠性的重要保障,能够提供比文件系统更多的数据安全保护。它的基本原理是当数据库修改操作提交的时候,数据并不会即时写入到磁盘的数据文件中,而是保存在内存中,避免每次的数据库更新要求都写入数据文件,从而提高数据库更新的性能;并根据修改操作生成重做数据(redo data)并写入到磁盘成为重做日志,避免在故障的情况下,由于内存数据的丢失而导致数据丢失。当数据库操作过程出现故障时,可以通过持久化的重做日志对数据进行恢复。
现有大多数数据库应用中,为了提高系统并发吞吐性能,数据库提供多线程并发处理的访问方式。虽然多个线程可以并发访问数据库,为了提高写磁盘的效率,多个重做数据在写入磁盘前,需要先缓存到重做队列(redo queue)中再依次写入磁盘。因为重做数据存在时序性限制,多个线程往重做队列中拷贝重做数据时,需要在全局的重做队列锁保护范围内来保证时序,即每次写重做数据都需要抢占重做队列锁后做耗时较大的数据拷贝。
现有技术中多个线程只能以串行的方式生成和拷贝重做数据,因此存在重做数据处理效率低的缺陷,影响了大业务量并发应用下系统的吞吐量。
发明内容
本发明实施例提供了一种处理数据库重做数据的方法和装置,用于提高重做数据的处理性能。
第一方面,本发明实施例提供了一种处理数据库重做数据的方法,应用于服务器中,所述服务器中运行有数据读取线程以及多个应用线程,所述多个应用线程以并发的方式修改数据库,所述方法包括:所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁;所述数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
在第一方面的第一种可能的实现方式中,所述数据读取条件为到达预定的时间周期,或所述时序队列的长度达到预定值,或所述应用线程的缓存数据量达到预定值。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,进一步包括获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后,进一步包括释放所述重做队列的队列锁。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该方法还包括:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括释放所述时序队列的队列锁;或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括给所述时序队列的队尾元素添加读取结束标识。
结合第一方面以及第一方面的第一至第三种可能的实现方式中的任意一个,在第四种可能的实现方式中,该方法还包括:所述从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括将所述应用线程的标识从所述时序队列中删除。
第二方面,本发明实施例提供了一种处理数据库重做数据的服务器,所述服务器中运行有多个应用线程,所述多个应用线程以并发的方式修改数据库,所述服务器包括:
时序队列处理单元,用于在所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁以及将所述时序队列发送到重做队列处理单元;
所述重做队列处理单元,用于从所述时序队列处理单元接收所述时序队列,以及确定数据读取条件得到满足后,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310101317.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:型钢混凝土空腹桁架
- 下一篇:楼层钢构架建模用吊耳结构
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置