CN103150149A - 处理数据库重做数据的方法和装置 - Google Patents

处理数据库重做数据的方法和装置 Download PDF

Info

Publication number
CN103150149A
CN103150149A CN201310101317XA CN201310101317A CN103150149A CN 103150149 A CN103150149 A CN 103150149A CN 201310101317X A CN201310101317X A CN 201310101317XA CN 201310101317 A CN201310101317 A CN 201310101317A CN 103150149 A CN103150149 A CN 103150149A
Authority
CN
China
Prior art keywords
formation
reforming
data
thread
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310101317XA
Other languages
English (en)
Other versions
CN103150149B (zh
Inventor
王南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NINGBO JIETI EDUCATION TECHNOLOGY Co.,Ltd.
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310101317.XA priority Critical patent/CN103150149B/zh
Publication of CN103150149A publication Critical patent/CN103150149A/zh
Priority to JP2016504452A priority patent/JP2016517102A/ja
Priority to PCT/CN2013/084687 priority patent/WO2014153940A1/zh
Priority to EP13880562.7A priority patent/EP2945072A4/en
Priority to US14/828,146 priority patent/US10387258B2/en
Application granted granted Critical
Publication of CN103150149B publication Critical patent/CN103150149B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/825Indexing scheme relating to error detection, to error correction, and to monitoring the problem or solution involving locking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种处理数据库重做数据的方法和装置,所述方法包括:服务器包含的多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到所述时序队列,保存结束后释放时序队列锁;数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据到重做队列。使用本发明,通过将时序队列和数据队列分离,能够提高重做数据的处理效率,从而提升数据库系统的并发吞吐量。

Description

处理数据库重做数据的方法和装置
技术领域
本发明涉及通信网络技术领域,尤其涉及处理数据库重做数据的方法和装置。
背景技术
重做日志(redo log)是数据库操作中数据可靠性的重要保障,能够提供比文件系统更多的数据安全保护。它的基本原理是当数据库修改操作提交的时候,数据并不会即时写入到磁盘的数据文件中,而是保存在内存中,避免每次的数据库更新要求都写入数据文件,从而提高数据库更新的性能;并根据修改操作生成重做数据(redo data)并写入到磁盘成为重做日志,避免在故障的情况下,由于内存数据的丢失而导致数据丢失。当数据库操作过程出现故障时,可以通过持久化的重做日志对数据进行恢复。
现有大多数数据库应用中,为了提高系统并发吞吐性能,数据库提供多线程并发处理的访问方式。虽然多个线程可以并发访问数据库,为了提高写磁盘的效率,多个重做数据在写入磁盘前,需要先缓存到重做队列(redoqueue)中再依次写入磁盘。因为重做数据存在时序性限制,多个线程往重做队列中拷贝重做数据时,需要在全局的重做队列锁保护范围内来保证时序,即每次写重做数据都需要抢占重做队列锁后做耗时较大的数据拷贝。
现有技术中多个线程只能以串行的方式生成和拷贝重做数据,因此存在重做数据处理效率低的缺陷,影响了大业务量并发应用下系统的吞吐量。
发明内容
本发明实施例提供了一种处理数据库重做数据的方法和装置,用于提高重做数据的处理性能。
第一方面,本发明实施例提供了一种处理数据库重做数据的方法,应用于服务器中,所述服务器中运行有数据读取线程以及多个应用线程,所述多个应用线程以并发的方式修改数据库,所述方法包括:所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁;所述数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
在第一方面的第一种可能的实现方式中,所述数据读取条件为到达预定的时间周期,或所述时序队列的长度达到预定值,或所述应用线程的缓存数据量达到预定值。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,进一步包括获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后,进一步包括释放所述重做队列的队列锁。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该方法还包括:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括释放所述时序队列的队列锁;或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括给所述时序队列的队尾元素添加读取结束标识。
结合第一方面以及第一方面的第一至第三种可能的实现方式中的任意一个,在第四种可能的实现方式中,该方法还包括:所述从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括将所述应用线程的标识从所述时序队列中删除。
第二方面,本发明实施例提供了一种处理数据库重做数据的服务器,所述服务器中运行有多个应用线程,所述多个应用线程以并发的方式修改数据库,所述服务器包括:
时序队列处理单元,用于在所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁以及将所述时序队列发送到重做队列处理单元;
所述重做队列处理单元,用于从所述时序队列处理单元接收所述时序队列,以及确定数据读取条件得到满足后,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
在第一方面的第一种可能的实现方式中,所述重做队列处理单元确定满足数据读取条件具体包括:所述重做队列处理单元确定到达预定的时间周期或所述时序队列的长度达到预定值或所述线程的缓存数据量达到预定值。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述重做队列处理单元,进一步的用于:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述重做队列的队列锁。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,该方法还包括,所述重做队列处理单元,进一步的用于:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述时序队列的队列锁;或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前给所述时序队列的队尾元素添加读取结束标识。
结合第一方面以及第一方面的第一至第三种可能的实现方式中的任意一个,在第四种可能的实现方式中,该方法还包括:所述重做队列处理单元,在从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后进一步的还用于将所述应用线程的标识从所述时序队列中删除。
由以上技术方案可以看出,由于本发明实施例利用应用线程生成重做数据后保存到为应用线程分配的缓存,并将应用线程的标识保存到时序队列,满足数据读取条件后才从所述时序队列中读取所述应用线程的标识的顺序依次将应用线程的缓存中的重做数据读取到重做队列,从而提高了重做数据的处理效率,提升了数据库系统的并发吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一个实施例提供的数据库重做数据的处理方法流程图;
图2为本发明另一个实施例提供的数据库重做数据的处理方法信令流程图;
图3为本发明一个实施例提供的数据库重做数据的处理装置结构图;
图4为本发明一个实施例提供的基于计算机系统的数据库重做数据的处理装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明一个实施例提供了处理数据库重做数据的方法,应用于服务器中,所述服务器中运行有数据读取线程以及多个应用线程,所述多个应用线程以并发的方式修改数据库,请参照图1,该方法包括:
步骤101:所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁。
步骤102:所述数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
其中,数据读取条件具体为到达预定的时间周期,或所述时序队列的长度达到预定值,或所述应用线程的缓存数据量达到预定值。
可选的,所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,进一步包括获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后,进一步包括释放所述重做队列的队列锁。
可选的,所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括释放所述时序队列的队列锁;或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括给所述时序队列的队尾元素添加读取结束标识。
可选的,从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括将所述应用线程的标识从所述时序队列中删除。
本发明另一个实施例提供了处理数据库重做数据的信令流程图,请参照图2,具体流程包括:
步骤201:服务器接收到终端访问数据库的指令后,启动多个应用线程并发修改数据库,并为每个应用线程分配各自的缓存,并启动数据读取线程。
具体的,本实施例中,有三个并发修改数据库的应用线程,其线程标识分别为SessionID1、SessionID2和SessionID3。
步骤202:任一应用线程根据修改数据库的操作生成重做数据后,将所述重做数据保存到为该应用线程分配的缓存,获取时序队列锁后将所述应用线程的标识保存到时序队列,保存结束后释放该时序队列锁。
具体的,本实施例中,步骤202中三个应用线程的操作子步骤如下:
步骤202-1:应用线程1对数据库进行修改,根据该修改操作生成重做数据Redo1,将Redo1保存到应用线程1的缓存中。
步骤202-2:应用线程1锁定时序队列、即获取时序队列锁,因此获取到对所述时序队列的写入权限,将应用线程1的标识SessionID1保存到时序队列中,保存后时序队列只包含一个应用线程标识SessionID1,并对时序队列解锁,即释放时序队列锁;因为通过锁定时序队列而获取到所述时序队列的写入权限后,其他应用线程无法同时执行写时序队列的操作,从而保证了在时序队列中保存的应用线程标识的时序性,因为加锁后只要执行一个整形数据的写入操作,所以对时序队列的锁定时间非常短,多个线程的并发性高。
步骤202-3:应用线程2对数据库进行修改,根据该修改操作生成重做数据Redo2,将Redo2保存到应用线程2的缓存中。
步骤202-4:应用线程2锁定时序队列后,将应用线程2的标识SessionID2保存到时序队列中,保存后时序队列包含的应用线程标识为SessionID1和SessionID2,并对时序队列解释,因为队列具有先进先出的特点,所以在时序队列中包含的线程标识根据保存先后顺序存放。
步骤202-5:应用线程3对数据库进行修改,根据该修改操作生成重做数据Redo3,将Redo3保存到应用线程3的缓存中。
步骤202-6:应用线程3锁定时序队列后,将线程3的标识SessionID3保存到时序队列中,保存后时序队列包含的应用线程标识为SessionID1、SessionID2和SessionID3,并对时序队列解锁。
步骤202-7:应用线程2对数据库再次进行修改,根据该修改操作生成重做数据Redo4,将Redo4保存到应用线程2的缓存中,因为缓存采用队列的数据结构,具有先进先出的特点,重做数据Redo2和Redo4按生成先后顺序在缓存中存放。
步骤202-8:应用线程2锁定时序队列后,将应用线程2的标识SessionID2保存到时序队列中,保存后时序队列包含的应用线程标识为SessionID1、SessionID2、SessionID3和SessionID2,并对时序队列解锁。
步骤203:数据读取线程确定满足数据读取条件后,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
其中,数据读取条件可以是到达预定的时间周期、或者时序队列的长度达到预定值、或者应用线程的缓存数据量达到预定值。可选的,服务器可以同时设置多个不同类型的数据读取条件,当任意一个条件满足时,都需要进行数据读取操作。例如,可以同时设置第一数据读取条件为时间周期为10s,第二数据读取条件为应用线程的缓存数据量达到10个,通过设置时间周期避免数据库操作不频繁时重做数据在缓存中保留时间过长,通过设置应用线程的缓存阈值避免数据库操作频繁时缓存中的数据得不到及时处理。具体的,在本实施例中,将数据读取条件设置为时序队列的长度达到4。
其中,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列,该步骤具体实现方法的可以是:遍历时序队列,将每个遍历得到的应用线程的标识对应的应用线程的缓存中一个重做数据读取到重做队列。
其中,因为在依次从时序队列中应用线程的标识对应的应用线程的缓存读取重做数据的过程中可能有新的应用线程的标识保存到时序队列,为了减少对本次依次读取重做数据操作的干扰、提高数据读取的效率,可以在本次依次读取重做数据操作之前,锁定时序队列、即获得时序队列锁,从而获取时序队列的写入权限,以禁止有新的应用线程的标识保存到时序队列中,直到本次读取重做数据操作结束之后释放时序队列锁,应用程序将等待、直到获取时序队列锁后才能将新的应用线程的标识保存到时序队列,或者在本次依次读取重做数据操作之前给时序队列的队尾元素添加读取结束标识,此时允许保存新的应用线程的标识,但检测到该读取结束标识时停止本次读取重做数据的操作。
可选的,因为允许同时设置多个不同类型的数据读取条件,在确定满足第一数据读取条件后依次读取重做数据写入重做队列的过程中可能检测到满足第二数据读取条件,为了避免第二数据读取条件引起新的数据读取并写入重做队列操作,在确定满足第一数据读取条件后,执行依次读取重做数据写入重做队列操作之前,锁定重做队列以获取重做队列的写入权限,从而避免了同时有新的写重做队列操作。只有当第一次执行的依次读取重做数据写入重做队列操作结束并释放重做队列锁之后,数据读取线程才能根据第二数据读取条件为新的重做数据读取操作分配重做队列锁,从而执行新的重做数据读取并写入重做队列操作。
其中,从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后,还包括将所述时序队列中应用线程的标识从所述时序队列中删除。
具体的,本实施例中,步骤203中数据读取线程的详细操作过程如下:
数据读取线程确定时序队列的长度为4后,在时序队列的队尾元素,即第四个元素添加读取结束标识后遍历该时序队列,因此在重做数据读取过程中三个应用线程还可以继续执行数据库修改操作,即将重做数据添加到缓存中,以及将应用线程的标识添加到时序队列中。其中,通过为队列中每个元素添加一个StopFlag属性,且单独将队尾元素的StopFlag属性值设置为1的方式来添加读取结束标识。
数据读取线程遍历得到第一个应用线程的标识为SessionID1后,将SessionID1对应的应用线程1的缓存中一个重做数据读取到重做队列中,因为缓存是先进先出的结构,所以读取到的是第一个数据即Redo1,读取过后第二个数据将成为第一个数据;并将SessionID1从时序队列中删除,此时重做队列中包含的数据为Redo1。
数据读取线程遍历得到第二个应用线程的标识为SessionID2后,将SessionID2对应的应用线程2的缓存中一个重做数据、即Redo2读取到重做队列中,读取过后Redo4将成为应用线程2的缓存中第一个重做数据;并将SessionID2从时序队列中删除,此时重做队列中包含的数据为Redo1,Redo2。
数据读取线程遍历得到第三个应用线程的标识为SessionID3后,将SessionID3对应的应用线程3的缓存中一个重做数据、即Redo3读取到重做队列中,并将SessionID3从时序队列中删除,此时重做队列中包含的数据为Redo1,Redo2,Redo3。
数据读取线程遍历得到第四个应用线程的标识为SessionID2后,将SessionID2对应的应用线程2的缓存中一个重做数据、即Redo4读取到重做队列中,并将SessionID2从时序队列中删除,此时重做队列中包含的数据为Redo1,Redo2,Redo3,Redo4。因为遍历到第四个元素时,检测到读取结束标识,停止本次重做数据读取操作。
步骤204:将所述重做队列中的重做数据写入到磁盘中。
具体的,可以是数据读取线程执行完本次读取重做数据的操作后立即将重做队列中的重做数据一次性全部写入到磁盘中。
本发明一个实施例提供了处理数据库重做数据的服务器,服务器中运行有多个应用线程,所述多个应用线程以并发的方式修改数据库,请参照图3,该服务器300包括:
时序队列处理单元301,用于在所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁以及将所述时序队列发送到重做队列处理单元302;
重做队列处理单元302,用于从时序队列处理单元301接收所述时序队列,以及确定数据读取条件得到满足后,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
可选的,重做队列处理单元302确定满足数据读取条件具体包括确定到达预定的时间周期或所述时序队列的长度达到预定值或所述线程的缓存数据量达到预定值。
可选的,重做队列处理单元302,进一步的用于:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述重做队列的队列锁。
可选的,重做队列处理单元302,进一步的用于:所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述时序队列的队列锁;或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前给所述时序队列的队尾元素添加读取结束标识。
可选的,重做队列处理单元302,在从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后进一步的还用于将所述应用线程的标识从所述时序队列中删除。
本发明实施例中的服务器可以基于计算机系统来实现,图1、图2所示的方法均可在基于计算机系统的服务器来实现。图4示出了基于计算机系统来实现的服务器的实施例。本实施例中服务器可以包括:处理器401、存储器402和通信接口403,其中:
通信接口403,用于与终端通信。服务器与终端之间交互的消息均通过通信接口403发送和接收。具体地,通信接口403用于从终端接收访问数据库的指令;存储器402用于存储程序指令;处理器401用于从终端接收访问数据库的指令之后,调用存储器402中存储的程序指令,执行如下操作:启动数据读取线程以及多个应用线程,所述多个应用线程以并发的方式修改数据库,所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁;所述数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
其中,处理器401可以是中央处理器(central processing unit,CPU)、专用集成电路(application-specific integrated circuit,ASIC)等。其中,本实施例中的服务器可以包括总线404。处理器401、存储器402以及通信接口403之间可通过总线404连接并通信。其中,存储器402可以包括:随机存取存储器(random access memory,RAM),只读存储器(read-onlymemory,ROM),磁盘等具有存储功能的实体。
处理器401还可以用于执行方法实施例中图1、图2描述的服务器的各步骤,本发明实施例在此不再详述。
以上对本发明所提供的一种进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种处理数据库重做数据的方法,应用于服务器中,所述服务器中运行有数据读取线程以及多个应用线程,所述多个应用线程以并发的方式修改数据库,其特征在于,所述方法包括:
所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁;
所述数据读取线程确定数据读取条件得到满足,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
2.根据权利要求1所述的方法,其特征在于:
所述数据读取条件为到达预定的时间周期,或所述时序队列的长度达到预定值,或所述应用线程的缓存数据量达到预定值。
3.根据权利要求1或2所述的方法,其特征在于:
所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,进一步包括获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;
所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后,进一步包括释放所述重做队列的队列锁。
4.根据权利要求1、2或3所述的方法,其特征在于:
所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括释放所述时序队列的队列锁;
或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前还包括给所述时序队列的队尾元素添加读取结束标识。
5.根据权利要求1-4任一所述的方法,其特征在于,所述从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后还包括:
将所述应用线程的标识从所述时序队列中删除。
6.一种处理数据库重做数据的服务器,所述服务器中运行有多个应用线程,所述多个应用线程以并发的方式修改数据库,其特征在于,所述服务器包括:
时序队列处理单元,用于在所述多个应用线程中每一应用线程根据修改数据库的操作生成重做数据,并将所述重做数据相应保存到为所述每一应用线程分配的缓存中,获取时序队列锁后将所述应用线程的标识保存到时序队列,所述保存结束后释放所述时序队列锁以及将所述时序队列发送到重做队列处理单元;
所述重做队列处理单元,用于从所述时序队列处理单元接收所述时序队列,以及确定数据读取条件得到满足后,从所述时序队列中读取所述应用线程的标识的顺序,依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列。
7.根据权利要求6所述的服务器,其特征在于,所述重做队列处理单元确定满足数据读取条件具体包括:
所述重做队列处理单元确定到达预定的时间周期或所述时序队列的长度达到预定值或所述线程的缓存数据量达到预定值。
8.根据权利要求6或7所述的服务器,其特征在于,
所述重做队列处理单元,进一步的用于:
所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前,获取所述重做队列的队列锁,以获得对所述重做队列的写入权限;以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述重做队列的队列锁。
9.根据权利要求6、7或8所述的服务器,其特征在于,所述重做队列处理单元,进一步的用于:
所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前获取所述时序队列的队列锁以锁定所述时序队列,以及所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后释放所述时序队列的队列锁;
或者所述依次从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之前给所述时序队列的队尾元素添加读取结束标识。
10.根据权利要求6-9任一所述的服务器,其特征在于,所述重做队列处理单元,在从所述时序队列中应用线程的标识对应的应用线程的缓存中读取一个重做数据写入重做队列之后进一步的还用于:
将所述应用线程的标识从所述时序队列中删除。
CN201310101317.XA 2013-03-26 2013-03-26 处理数据库重做数据的方法和装置 Active CN103150149B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201310101317.XA CN103150149B (zh) 2013-03-26 2013-03-26 处理数据库重做数据的方法和装置
JP2016504452A JP2016517102A (ja) 2013-03-26 2013-09-30 データベースにおいて再実行データを処理するための方法および装置
PCT/CN2013/084687 WO2014153940A1 (zh) 2013-03-26 2013-09-30 处理数据库重做数据的方法和装置
EP13880562.7A EP2945072A4 (en) 2013-03-26 2013-09-30 METHOD AND DEVICE FOR PROCESSING RECOVERY DATA OF A DATABASE
US14/828,146 US10387258B2 (en) 2013-03-26 2015-08-17 Method and apparatus for processing redo data in database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310101317.XA CN103150149B (zh) 2013-03-26 2013-03-26 处理数据库重做数据的方法和装置

Publications (2)

Publication Number Publication Date
CN103150149A true CN103150149A (zh) 2013-06-12
CN103150149B CN103150149B (zh) 2015-11-25

Family

ID=48548251

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310101317.XA Active CN103150149B (zh) 2013-03-26 2013-03-26 处理数据库重做数据的方法和装置

Country Status (5)

Country Link
US (1) US10387258B2 (zh)
EP (1) EP2945072A4 (zh)
JP (1) JP2016517102A (zh)
CN (1) CN103150149B (zh)
WO (1) WO2014153940A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014153940A1 (zh) * 2013-03-26 2014-10-02 华为技术有限公司 处理数据库重做数据的方法和装置
CN105912479A (zh) * 2016-04-07 2016-08-31 武汉数字派特科技有限公司 一种并发数据的缓存方法及结构
CN106341345A (zh) * 2016-08-18 2017-01-18 北京奇虎科技有限公司 一种并发请求的处理方法及装置
CN108009049A (zh) * 2017-11-28 2018-05-08 厦门市美亚柏科信息股份有限公司 Myisam存储引擎删除记录离线恢复方法、存储介质
CN108874588A (zh) * 2018-06-08 2018-11-23 郑州云海信息技术有限公司 一种数据库实例恢复方法和装置
CN111259205A (zh) * 2020-01-15 2020-06-09 北京百度网讯科技有限公司 一种图数据库遍历方法、装置、设备及存储介质
CN112181902A (zh) * 2020-11-30 2021-01-05 阿里云计算有限公司 数据库的存储方法、装置及电子设备
CN113656444A (zh) * 2021-08-26 2021-11-16 傲网信息科技(厦门)有限公司 一种数据持久化方法、服务器及管理设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10282361B2 (en) * 2016-04-29 2019-05-07 Salesforce.Com, Inc. Transforming time series data points from concurrent processes
CN109088950A (zh) * 2018-10-25 2018-12-25 珠海格力电器股份有限公司 数据传输方法、装置、系统和计算机可读存储介质
CN115905268B (zh) * 2023-01-03 2023-09-29 北京力控元通科技有限公司 一种基于队列的电表数据处理方法、系统及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1842789A (zh) * 2004-03-29 2006-10-04 微软公司 用于在数据库恢复期间快照查询的系统和方法
CN1920780A (zh) * 2006-08-15 2007-02-28 杭州华为三康技术有限公司 访问临界区的方法和系统
WO2007129287A1 (en) * 2006-05-09 2007-11-15 Fleetmatics Patents Limited A vehicle tracking system
CN100428282C (zh) * 2002-10-11 2008-10-22 沙桥技术有限公司 令牌触发多线程操作的方法和装置
CN102243648A (zh) * 2010-05-11 2011-11-16 微软公司 并发地访问数据

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05316309A (ja) * 1992-05-08 1993-11-26 Matsushita Electric Ind Co Ltd ファクシミリ電子メールシステム
WO1996027157A1 (fr) 1995-02-28 1996-09-06 Ntt Data Communications Systems Corporation Systeme associatif decentralise et traitements de journaux et de reprise dans celui-ci
JPH08235042A (ja) * 1995-02-28 1996-09-13 N T T Data Tsushin Kk 複数ジャーナル一括取得方式
US7415466B2 (en) * 1996-03-19 2008-08-19 Oracle International Corporation Parallel transaction recovery
JPH09282296A (ja) * 1996-04-10 1997-10-31 Hitachi Ltd 多重化ノード間通信制御方式
DE60233877D1 (de) * 2001-07-16 2009-11-12 Sap Ag Parallelisierte nur-redo-protokollierung und behebung für datenbanksysteme mit hochverfügbarem hauptspeicher
JP4041002B2 (ja) 2003-03-24 2008-01-30 株式会社三菱東京Ufj銀行 データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム
US7412460B2 (en) * 2003-06-19 2008-08-12 International Business Machines Corporation DBMS backup without suspending updates and corresponding recovery using separately stored log and data files
US8650155B2 (en) * 2008-02-26 2014-02-11 Oracle International Corporation Apparatus and method for log based replication of distributed transactions using globally acknowledged commits
CN102195795B (zh) * 2010-03-19 2014-03-12 Tcl集团股份有限公司 智能小区日志系统及其日志记录方法
CN101794247A (zh) * 2010-03-26 2010-08-04 天津理工大学 嵌套事务模型下实时数据库故障恢复方法
CN102945278B (zh) * 2012-11-09 2015-12-09 华为技术有限公司 一种数据库记录重做日志的方法和装置
CN103150149B (zh) * 2013-03-26 2015-11-25 华为技术有限公司 处理数据库重做数据的方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100428282C (zh) * 2002-10-11 2008-10-22 沙桥技术有限公司 令牌触发多线程操作的方法和装置
CN1842789A (zh) * 2004-03-29 2006-10-04 微软公司 用于在数据库恢复期间快照查询的系统和方法
WO2007129287A1 (en) * 2006-05-09 2007-11-15 Fleetmatics Patents Limited A vehicle tracking system
CN1920780A (zh) * 2006-08-15 2007-02-28 杭州华为三康技术有限公司 访问临界区的方法和系统
CN102243648A (zh) * 2010-05-11 2011-11-16 微软公司 并发地访问数据

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
李圣陶: "基于Oracle的数据迁移优化方法研究", 《信息科技辑》 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014153940A1 (zh) * 2013-03-26 2014-10-02 华为技术有限公司 处理数据库重做数据的方法和装置
US10387258B2 (en) 2013-03-26 2019-08-20 Huawei Technologies Co., Ltd. Method and apparatus for processing redo data in database
CN105912479A (zh) * 2016-04-07 2016-08-31 武汉数字派特科技有限公司 一种并发数据的缓存方法及结构
CN106341345A (zh) * 2016-08-18 2017-01-18 北京奇虎科技有限公司 一种并发请求的处理方法及装置
CN108009049A (zh) * 2017-11-28 2018-05-08 厦门市美亚柏科信息股份有限公司 Myisam存储引擎删除记录离线恢复方法、存储介质
CN108874588A (zh) * 2018-06-08 2018-11-23 郑州云海信息技术有限公司 一种数据库实例恢复方法和装置
CN111259205A (zh) * 2020-01-15 2020-06-09 北京百度网讯科技有限公司 一种图数据库遍历方法、装置、设备及存储介质
CN111259205B (zh) * 2020-01-15 2023-10-20 北京百度网讯科技有限公司 一种图数据库遍历方法、装置、设备及存储介质
CN112181902A (zh) * 2020-11-30 2021-01-05 阿里云计算有限公司 数据库的存储方法、装置及电子设备
CN112181902B (zh) * 2020-11-30 2021-08-31 阿里云计算有限公司 数据库的存储方法、装置及电子设备
CN113656444A (zh) * 2021-08-26 2021-11-16 傲网信息科技(厦门)有限公司 一种数据持久化方法、服务器及管理设备
CN113656444B (zh) * 2021-08-26 2024-02-27 友安云(厦门)数据科技有限公司 一种数据持久化方法、服务器及管理设备

Also Published As

Publication number Publication date
US20150355975A1 (en) 2015-12-10
WO2014153940A1 (zh) 2014-10-02
EP2945072A1 (en) 2015-11-18
JP2016517102A (ja) 2016-06-09
US10387258B2 (en) 2019-08-20
CN103150149B (zh) 2015-11-25
EP2945072A4 (en) 2016-06-29

Similar Documents

Publication Publication Date Title
CN103150149A (zh) 处理数据库重做数据的方法和装置
US8381230B2 (en) Message passing with queues and channels
CN102945278B (zh) 一种数据库记录重做日志的方法和装置
CN104572568B (zh) 读锁操作方法、写锁操作方法及系统
CN108959117B (zh) H2d写操作加速方法、装置、计算机设备及存储介质
CN102867035B (zh) 一种分布式文件系统集群高可用方法和装置
CN103593257B (zh) 一种数据备份方法及装置
CN105095287A (zh) Lsm数据合并排序方法和装置
CN105684020B (zh) 硬件平台中的订单账簿管理设备
CN108572876B (zh) 一种读写锁的实现方法及装置
CN110019873B (zh) 人脸数据处理方法、装置及设备
CN111124270B (zh) 缓存管理的方法、设备和计算机程序产品
CN114116665B (zh) 数据库中并行写入事务日志以提升处理效率的方法
CN111061690B (zh) 一种基于rac的数据库日志文件读取方法和装置
US8543722B2 (en) Message passing with queues and channels
CN104156316A (zh) 一种Hadoop集群批处理作业的方法及系统
CN109542860A (zh) 基于hdfs的业务数据管理方法、终端设备
CN112463037B (zh) 一种元数据保存方法、装置、设备、产品
CN114896215A (zh) 元数据的存储方法及装置
CN104572903B (zh) 一种Hbase数据库的控制数据入库的方法
CN110716814B (zh) 一种进程间大数据量通讯的性能优化方法和装置
CN106775450A (zh) 一种混合存储系统中的数据分布方法
CN105893521A (zh) 一种读写分离的HBase入库方法
CN111142795A (zh) 分布式存储系统写操作的控制方法、控制装置、控制设备
CN111090633A (zh) 一种分布式文件系统的小文件聚合方法、装置及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200716

Address after: Room 716, building C4, Lane 299, Guanghua Road, Ningbo hi tech Zone, Ningbo City, Zhejiang Province

Patentee after: NINGBO JIETI EDUCATION TECHNOLOGY Co.,Ltd.

Address before: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee before: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Effective date of registration: 20200716

Address after: 518000 Baoan District Xin'an street, Shenzhen, Guangdong, No. 625, No. 625, Nuo platinum Plaza,

Patentee after: SHENZHEN SHANGGE INTELLECTUAL PROPERTY SERVICE Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right