CN103744936B - 一种数据库中的多版本并发控制方法及数据库系统 - Google Patents
一种数据库中的多版本并发控制方法及数据库系统 Download PDFInfo
- Publication number
- CN103744936B CN103744936B CN201310750940.8A CN201310750940A CN103744936B CN 103744936 B CN103744936 B CN 103744936B CN 201310750940 A CN201310750940 A CN 201310750940A CN 103744936 B CN103744936 B CN 103744936B
- Authority
- CN
- China
- Prior art keywords
- page
- record
- write operation
- version
- affairs
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2329—Optimistic concurrency control using versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了数据库中的多版本并发控制方法及数据库系统,主要应用于数据库技术领域。数据库系统会设置一个页面的数据页链,该数据页链中包括该页面的各个版本页面的页面指针,而一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面,这样在读取数据库中的页面时,如果当前版本页面的时间戳大于数据读取请求中包括读取事务的时间戳,则直接可以根据所请求读取的页面的数据页链进行页级回滚到需要读取的页面,方便用户知道在任何时刻数据库中的页面,即方便对数据库中各个版本页面数据的查询。进一步地,数据库系统可以使得通过数据页链和记录链的结合可以高效地实现记录的回滚,实现一致性读取。
Description
技术领域
本发明涉及数据库技术领域,具体涉及一种数据库中的多版本并发控制方法及数据库系统。
背景技术
多版本并发控制(MVCC,Multi Version Concurrency Control),是一种在数据库系统中广泛使用的加锁机制,目前主流的商业数据库系统包括Oracle(甲骨文公司开发的一种数据库)、结构化查询语言服务器(SQL Server,Structured Query Language Server)和PostgreSQL等数据库都使用了这样一种机制。
一般的,多版本并发控制方案的实现包括有两种,一种为页级多版本,另一种为行级多版本。其中,页级多版本,指的是在页面上记录修改时间戳,对页面的访问需要根据该时间戳进行,如果时间戳不满足要求,则需要构造一个合适的页面版本,这样,在数据库内部对于同一个页面,就可能会有多个不同的版本。而行级多版本,指的是每当对记录进行更新时会产生一个新版本,这样对于同一记录的读操作和写操作可以访问记录的不同版本,达到读写不阻塞的效果。
在对现有技术的研究和实践过程中,本发明的发明人发现,在对某一个版本的页面进行读取时,需要根据一个页面上的所有事务的信息进行读取,如果一个页面上的事务较多,会使得对于数据页面的读取效率不高,不是很方便。
发明内容
本发明实施例提供一种数据库中的多版本并发控制方法及数据库系统,方便对数据库中各个版本页面数据的查询。
本发明实施例第一方面提供一种数据库中的多版本并发控制方法,包括:
接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;
如果所述数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;
如果所述当前版本页面的时间戳大于所述读取事务的时间戳,通过所述请求读取的页面的数据页链中所述当前版本页面的页面指针进行页级回滚,以将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;
其中,所述数据页链包括所述请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向该版本页面的前一版本页面。
本发明实施例第一方面的第一种可能实现方式中,所述方法还包括:
如果在所述进行页级回滚后的版本页面的时间戳所指示的时刻,所述进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;
其中,所述记录链中包括所述请求读取的页面的各个版本页面所包含的记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向该记录的前一版本记录。
结合本发明实施例第一方面,或第一方面的第一种可能实现方式,在本发明实施例第一方面的第二种可能实现方式中,所述方法还包括:
接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对所述数据库中的页面进行写操作,所述数据写操作请求中包括所述写操作事务的时间戳;
读取所述数据写操作请求所请求的页面的第一版本页面,根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;所述第一版本页面是在执行所述写操作之前,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面;
根据所述写操作事务的时间戳设置所述第二版本页面的时间戳;
更新所述数据库的事务链,以使其包括所述写操作事务的操作事务指针,所述事务链包括所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务;
设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。
结合本发明实施例第一方面的第二种可能实现方式,在本发明实施例第一方面的第三种可能实现方式中,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求插入记录的数据写操作请求时,在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向所述第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录;所述回滚记录中包括在所述第一版本页面上所述数据写操作请求所请求插入的记录已删除的信息;
所述更新所述数据库的事务链,具体包括:设置在所述第一版本页面上插入记录的写操作事务的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号。
结合本发明实施例第一方面的第二种可能实现方式,在本发明实施例第一方面的第四种可能实现方式中,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求删除记录的数据写操作请求时,则将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向所述第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记为已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;
所述更新所述数据库的事务链,具体包括:设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针指向所述删除记录的写操作事务的前一次操作的事务号。
结合本发明实施例第一方面的第二种可能实现方式,在本发明实施例第一方面的第五种可能实现方式中,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求更新记录的数据写操作请求时,则根据所述数据写操作请求的指示,更新所述第一版本页面中的相应记录,以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述根据所述写操作事务的时间戳设置所述第二版本页面的时间戳,具体包括:将所述第二版本页面的时间戳设置为所述写操作事务的时间戳;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面用于指针指向第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录用于指针指向所述第一版本页面上更新前的记录;
所述更新所述数据库的事务链,具体包括:设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
结合本发明实施例第一方面的第二种到第五种可能实现方式中任一种可能实现方式,在本发明实施例第一方面的第六种可能实现方式中,所述根据所述写操作事务的时间戳设置所述第二版本页面的时间戳,具体包括:
如果所述第一版本页面的时间戳大于所述写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;
如果所述第一版本页面的时间戳小于所述写操作事务的时间戳,将所述第二版本页面的时间戳设置为所述写操作事务的时间戳。
本发明实施例第二方面提供一种数据库系统,包括:
读取接收单元,用于接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;
读取单元,用于如果所述读取接收单元接收的数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;
页级回滚单元,用于如果所述当前版本页面的时间戳大于所述读取事务的时间戳,通过所述请求读取的页面的数据页链中当前版本页面的页面指针进行页级回滚,将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;
所述数据页链包括所述请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向所述该版本页面的前一版本页面。
本发明实施例第二方面的第一种可能实现方式中,所述数据库系统还包括:
行级回滚单元,用于如果在所述页级回滚单元进行页级回滚后的版本页面的时间戳所指示的时刻,所述进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;
其中,所述记录链中包括所述请求读取的页面的各个版本页面所包括记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向该记录的前一版本记录。
结合本发明实施例第二方面,或第二方面的第一种可能实现方式,在本发明实施例第二方面的第二种可能实现方式中,所述数据库系统还包括:
写操作接收单元,用于接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对所述数据库中的页面进行写操作,所述数据写操作请求中包括写操作事务的时间戳;
写操作单元,用于读取所述数据写操作请求对应的第一版本页面,根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;所述第一版本页面是在执行所述写操作之前,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面;
时间戳设置单元,用于根据所述写操作事务的时间戳设置所述第二版本页面的时间戳;
回滚设置单元,用于更新所述数据库中的事务链,以使得所述事务链包括所述写操作事务的操作事务指针,所述事务链包括对所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务;并设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。
结合本发明实施例第二方面的第二种可能实现方式,在本发明实施例第二方面的第三种可能实现方式中:
所述写操作单元,具体用于当所述写操作接收单元接收的数据写操作请求为请求在所述第一版本页面中插入记录的数据写操作请求时,在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面;
所述回滚设置单元,具体包括:数据页链设置单元,用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;记录链设置单元,用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录;事务链设置单元,用于设置在所述第一版本页面上插入记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号;所述回滚记录中包括在所述第一版本页面上所述数据写操作请求所请求插入的记录已删除的信息。
结合本发明实施例第二方面的第二种可能实现方式,在本发明实施例第二方面的第四种可能实现方式中:
所述写操作单元,还用于当所述写操作接收单元接收的数据写操作请求为请求删除所述第一版本页面中记录的数据写操作请求时,将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述数据页链设置单元,还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元,还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记为已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;所述事务链设置单元,还用于设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述删除记录的写操作事务的前一次操作的事务号。
结合本发明实施例第二方面的第二种可能实现方式,在本发明实施例第二方面的第五种可能实现方式中:
所述写操作单元,还用于当所述写操作接收单元接收的数据写操作请求为请求更新所述第一版本页面中记录的数据写操作请求时,根据所述数据写操作请求的指示,更新所述第一版本页面中的相应记录,以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述数据页链设置单元,还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元,还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录指针用于指向所述第一版本页面上更新前的记录;所述事务链设置单元,还用于设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
结合本发明实施例第二方面的第二种到第五种可能实现方式中任一种可能实现方式,在本发明实施例第二方面的第六种可能实现方式中:
所述时间戳设置单元,具体用于如果所述第一版本页面的时间戳大于所述写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;如果所述第一版本页面的时间戳小于所述写操作事务的时间戳,将所述第二版本页面的时间戳设置为所述写操作事务的时间戳。
本实施例中数据库系统会设置一个页面的数据页链,该数据页链中包括该页面的各个版本页面的页面指针,而一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面,这样在读取数据库中的页面时,如果当前版本页面的时间戳大于数据读取请求中包括对应的读取事务的时间戳,则直接可以根据所请求读取的页面的数据页链进行页级回滚到需要读取的版本页面,方便用户知道在任何时刻数据库中的页面,即方便对数据库中各个版本页面数据的查询。且数据库系统可以再结合记录链将页级回滚后的版本页面中处于操作状态的记录回滚到未修改时的记录,使得通过数据页链和记录链的结合可以高效地实现记录的回滚,实现一致性读取。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据库的多版本并发控制方法的流程图;
图2是本发明实施例提供的另一种数据库的多版本并发控制方法的流程图;
图3是本发明实施例提供的另一种数据库的多版本并发控制方法的流程图;
图4是本发明实施例中数据库系统读取页面的示意图;
图5是本发明实施例中数据库系统在页面中插入记录的示意图;
图6是本发明实施例中数据库系统删除页面中记录的示意图;
图7是本发明实施例提供的一种数据库系统的结构示意图;
图8是本发明实施例提供的另一种数据库系统的结构示意图;
图9是本发明实施例提供的另一种数据库系统的结构示意图;
图10是本发明实施例提供的另一种数据库系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据库的多版本并发控制方法,主要是由数据库系统所执行的方法,比如分布式磁盘数据库系统,集群数据库系统,或大规模并行处理(massivelyparallel processing,MPP)数据库系统等,流程图如图1所示,包括:
步骤101,接收读取事务产生的数据读取请求,该数据读取请求用于请求读取数据库中的页面,数据读取请求中包括该读取事务的时间戳。
可以理解,数据库系统会提供用户界面,这样用户就可以在用户界面上触发对数据库中数据的写操作(比如删除、插入或更新数据库中的记录)或触发对数据库中数据的读取流程,如果用户从用户界面上发送数据的读取流程,则数据库系统从用户界面上接收到数据读取请求后,会执行步骤102到104。
该数据读取请求中可以包括读取事务的时间戳,还可以包括需要读取的页面的标识等信息,其中用户对数据库中数据的一次操作称为一个事务,在本实施例中是读取操作,则对应的事务为读取事务。用户每次对数据库进行写操作并提交到数据库系统进行储存后,数据库系统都会相应的储存该次写操作的相应信息,比如用于唯一标识一次操作的系统控制号(System Control Number,SCN)和时间戳等,时间戳具体可以用系统逻辑时间戳(System Logical Timestamp,SLT)来表示。
步骤102,判断数据读取请求所请求读取的页面的当前版本页面的时间戳是否大于读取事务的时间戳,如果大于,则说明用户需要读取的页面并不是用户最新一次写操作后版本的页面,则执行步骤104;可以理解,如果小于或等于,则执行步骤103;
步骤103,读取上述数据读取请求所请求读取的页面的读取当前版本页面。
当用户对数据库中数据进行写操作时,可以对一个页面进行多次写操作,而每次写操作后,数据库系统都会储存在写操作之前版本的页面和写操作之后版本的页面,且数据库系统还可以为每个版本页面设置对应的回滚信息,以便用户后续对数据库的查询和回滚,这里回滚是指找回到用户对一个页面进行一次或多次写操作前的信息。本步骤中读取的当前版本页面是用户对该页面进行最新写操作后,数据库系统储存的最新写操作之后的版本页面。
其中一个版本页面的回滚信息可以包括页面指针和记录指针等,其中,一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面,一个页面的所有版本页面的页面指针集合起来可以形成该页面的数据页链;一个版本页面所包括的一个记录的记录指针用于指向该记录的上一次操作前的另一版本记录前一版本记录,而一个页面的所有版本页面所包括的记录的记录指针集合起来可以形成该页面的记录链。需要说明的是,在数据库中储存数据时是按照页面来储存的,一个数据页面中可以包括多行数据,每行数据都会按照一定规则进行储存,则一行数据可以称为一个记录。
步骤104,根据上述数据读取请求所请求读取的页面的数据页链中,上述当前版本页面的页面指针进行页级回滚,以将当前版本页面回滚到时间戳小于或等于读取事务的时间戳的版本页面,这里数据页链中包括请求读取的页面的各个版本页面的页面指针。具体地,数据库系统可以先根据当前版本页面的页面指针回滚到前一版本页面,如果前一版本页面的时间戳还大于上述读取事务的时间戳,则再根据前一版本页面的页面指针进行页级回滚,这样循环操作直到回滚到一个版本页面的时间戳小于或等于读取事务的时间戳就停止回滚。这里当前版本页面的页面指针用于指向当前版本页面的上一次操作前的另一版本页面即前一版本页面,且页级回滚是指以页面为单位,找回到用户对一个页面进行一次或多次写操作前的信息。
需要说明的是,数据库系统在执行上述步骤104后得到数据读取请求对应的某一版本页面,如果该版本页面上的所有记录在当时都处于非操作状态,即这些记录当时没有被数据库系统操作,则结束流程;但是如果该版本页面中的某些记录当时正处于操作状态,则数据库系统还需要进行行级回滚,这里行级回滚是指以页面中行数据为单位,找回到用户对某一行或某几行数据进行一次或多次写操作前的信息,具体地,可以执行如下步骤,流程图如图2所示,包括:
步骤105,判断在进行页级回滚后的版本页面的时间戳所指示的时刻,该进行页级回滚后的版本页面中的一条或多条记录是否处于操作状态,即该记录当时正被数据库系统操作,如果处于操作状态,则执行步骤106,如果处于非操作状态,则将进行页级回滚后的版本页面作为上述数据读取请求的最终结果。
进行页级回滚后的版本页面对应有时间戳和回滚信息,本实施例中,数据库系统会遍历该版本页面上的所有记录来确定记录是否处于操作状态,如果在该进行页级回滚后的版本页面的某一记录中包括对该条记录进行写操作事务的事务号(Transaction ID),则说明了当时数据库系统正对该进行页级回滚后的版本页面中的某些记录进行写操作,则这些记录正处于操作状态。
步骤106,根据上述数据读取请求所请求读取的页面中记录的记录链中上述处于操作状态的记录(一条或多条)的记录指针进行行级回滚,将处于操作状态的记录回滚到操作前的记录,这里记录链中包括请求读取的页面的各个版本页面所包括记录的记录指针。这里行级回滚记录与上述页级回滚记录类似,不同的是,在本步骤中的行级回滚不需要进行时间戳的比较。
另外需要说明的是,如果数据库系统执行了上述步骤103中读取当前版本页面的操作后,还可以针对该当前版本页面执行上述步骤105和106类似的操作,即如果当前版本页面上某些记录处于操作状态时,需要将这些记录进行行级回滚,将处于操作状态的记录回滚到操作前的记录。在此不进行赘述。
可见,本实施例中数据库系统会设置一个页面的数据页链,该数据页链中包括该页面的各个版本页面的页面指针,而一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面,这样在读取数据库中的页面时,如果当前版本页面的时间戳大于数据读取请求中包括对应的读取事务的时间戳,则直接可以根据所请求读取的页面的数据页链进行页级回滚到需要读取的版本页面,方便用户知道在任何时刻数据库中的页面,即方便对数据库中各个版本页面数据的查询。且数据库系统可以再结合记录链将页级回滚后的版本页面中处于操作状态的记录回滚到未修改时的记录,使得通过数据页链和记录链的结合可以高效地实现记录的回滚,实现一致性读取。
上述步骤说明了101到106描述的是数据库系统对数据库中数据进行读取的操作流程,在具体实现时,数据库系统可以按照下述步骤对数据库中数据进行写操作,流程图如图3所示,包括:
步骤201,接收写操作事务产生的数据写操作请求,该数据写操作请求用于请求对数据库的页面进行写操作,在数据写操作请求中包括写操作事务的时间戳,这里写操作可以包括插入记录、删除记录或更新记录的操作。
步骤202,读取数据写操作请求所请求的页面的第一版本页面,根据数据写操作请求对第一版本页面进行写操作以得到第二版本页面,该第一版本页面是在执行上述写操作之前,数据库中储存的数据写操作请求所请求的页面的最新版本页面,该第二版本页面为在执行上述写操作之后,数据库中储存的该数据写操作请求所请求的页面的最新版本页面。
可以理解,当用户在数据库系统提供的用户界面上发起对数据库的数据写操作请求时,当数据库系统从用户界面上接收到数据写操作请求,就会先读取相应的第一版本页面,然后再对该第一版本页面进行写操作。
步骤203,根据写操作事务的时间戳设置第二版本页面的时间戳。具体地,如果第一版本页面的时间戳大于写操作事务的时间戳,说明有其它用户对该页面进行写操作,使得该第一版本页面的时间戳较大,则数据库系统需要在第一版本页面上进行继续操作,则不会修改第一版本页面的时间戳,而将第一版本页面的时间戳作为第二版本页面的时间戳。如果第一版本页面的时间戳小于或等于操作事务的时间戳,则直接将操作事务的时间戳设置为第二版本页面的时间戳。
步骤204,设置第二版本页面的回滚信息,该回滚信息包括页面指针和记录指针。并更新数据库的事务链,使得该事务链包括上述写操作事务的操作事务指针,该事务链包括对数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对数据库的页面中记录的前一次操作事务,其中一次操作事务可以操作一个页面上的至少一条记录,也可以操作多个页面上的记录。
在本实施例中写操作具体可以包括如下几种方式:
(1)如果写操作请求为请求在第一版本页面中插入记录的数据写操作请求,则数据库系统在执行步骤202时,是在第一版本页面中插入数据写操作请求所请求插入的记录以得到第二版本页面,储存第一版本页面和第二版本页面。
在执行步骤204时,数据库系统设置第二版本页面的页面指针,以使得第二版本页面的页面指针用于指向第一版本页面;设置第二版本页面的记录指针,以使得第二版本页面上插入记录的记录指针用于指向插入记录对应的回滚记录;更新数据库的事务链时,主要是设置在第一页面上插入记录的写操作事务的事务号,且设置该事务号对应的操作事务指针,以使得该操作事务指针用于指向该第一版本页面上插入记录的写操作事务的前一次操作的事务号。其中插入记录对应的回滚记录是在数据库系统中记录的,具体可以包括在第一版本页面上数据读取请求所请求插入的记录已删除的信息。
(2)数据写操作请求为请求删除第一版本页面中记录的数据写操作请求,则数据库系统在执行步骤202时,是将第一版本页面中该数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存第一版本页面和第二版本页面。
在执行步骤204时,数据库系统会设置第二版本页面的页面指针,以使得第二版本页面的页面指针用于指向第一版本页面;设置第二版本页面的记录指针,以使得第二版本页面上标记为已删除的记录的记录指针用于指向第一版本页面上数据写操作请求所请求删除的记录;更新数据库的事务链时,设置删除记录的写操作事务对应的事务号,且设置该事务号对应的操作事务指针,以使得该操作事务指针用于指向删除记录的写操作事务的前一次操作的事务号。
(3)数据写操作请求为请求更新第一版本页面中记录的数据写操作请求,则数据库系统在执行步骤202时,是根据数据写操作请求的指示,更新第一版本页面中相应的记录以得到第二版本页面,并储存第一版本页面和第二版本页面。
在执行步骤204时,数据库系统会设置第二版本页面的页面指针,以使得第二版本页面的页面指针用于指向第一版本页面;设置第二版本页面的记录指针,以使得第二版本页面上更新后的记录的记录指针用于指向第一版本页面上更新前的记录;更新数据库的事务链时,可以设置更新记录的写操作事务对应的事务号,且设置该事务号对应的操作事务指针,以使得该操作事务指针用于指向更新记录的写操作事务的前一次操作的事务号。
需要说明的是,上述第一版本的页面和第二版本的页面并不表示顺序关系,而是为了说明不同版本的页面。且上述步骤203和204之间并没有绝对的顺序关系,可以同时执行也可以顺序执行,图3中只是示出一种具体的实现方法。
另外需要说明的是,本发明实施例中数据库系统还记录事务链,这样可以进行事务回滚,即将用户某次操作回滚到操作之前的状态,其中由于一次操作可以对应至少一个页面的至少一条记录,即一个事务号会与至少一个页面的至少一条记录的操作关联,则事务链中可以包括对数据库的页面中记录的操作事务指针,其中一个事务号的操作事务指针用于指向另一事务号的操作事务。
以下以一个具体的实施例来说明本发明的数据库的多版本并发控制方法,在本实施例中,一个版本页面对应的回滚信息可以包括页面指针和记录指针,且在数据库系统中还储存事务链,在事务链中包括操作事务指针,且一个页面的所有旧版本页面都储存在对应的回滚段(Rollback Segment)中,数据库系统对数据库的操作主要有如下几种方式:
(1)读取数据库的页面a,在数据库系统回滚段1中储存有页面a的多个旧版本页面。
参考图4所示,图中通过重叠在页面之后的方框表示多个页面,通过重叠在回滚段之后的方框表示多个页面分别对应的回滚段。本实施例中,数据库系统接收数据读取请求,该数据读取请求用于请求读取页面a,其中包括读取事务的SLT为1001,这样数据库系统会将该读取事务的SLT与当前版本的页面a的SLT(为1020)进行比较,发现读取事务的SLT小于当前版本页面a的SLT,则需要先进行页级回滚操作。
在页级回滚时,数据库系统会沿着当前版本页面a页头上设置的页面指针,在当前版本页面a对应的回滚段1中,找到该当前版本页面a的上一次操作前的另一版本页面即版本4;然后再继续沿着版本4页头上设置的页面指针回滚到版本2的页面a,这样循环操作,直到回滚到SLT等于或略小于读取事务的SLT对应的版本页面为止,本实施例中回滚到SLT为990的版本n的页面a。图4中用较细的实线箭头来表示数据页链。
数据库系统会遍历该版本n的页面a中的每一条记录,发现在SLT为990的时间点,第1行记录处于操作状态即正被数据库系统操作,且事务号为T2。则数据库系统需要根据第1行对应的记录指针进行行级回滚,回滚到页面a的版本n2中的某一记录;然后再根据版本n2中记录的记录指针进行行级回滚,直到回滚到在事务号为T2的操作之前的记录。图4中用较粗的实线箭头来表示事务链,用虚线箭头表示记录链。
(2)在页面b中插入记录1的写操作,在数据库系统回滚段2中储存有页面b的多个旧版本页面。
参考图5所示,图中通过重叠在页面之后的方框表示多个页面,通过重叠在回滚段之后的方框表示多个页面分别对应的回滚段。当数据库系统接收到的数据写操作请求为在页面b中插入记录1的写操作,其中包括写操作事务的SLT为1008。
在根据数据写操作请求对页面b进行操作之前,数据库系统中储存的页面b的当前版本为版本3,该页面b的数据页链包括该版本3的页面b→对应的回滚段2中版本2的页面b→其它版本的页面b。
在根据数据写操作请求对页面b操作时,先在版本3的页面b中插入记录1形成当前版本页面b,然后储存当前版本页面b,且将版本3的页面b储存到回滚段2中。设置当前版本页面b的SLT为写操作事务的SLT即1008;设置当前版本的页面b的页面指针,使得该当前版本的页面b的页面指针用于指向版本3的页面b,则该页面b的数据页链包括当前版本的页面b→版本3的页面b→版本2的页面b→其它版本的页面b;设置当前版本的页面b关于记录1的记录指针,使得该当前版本的页面b的记录1的记录指针用于指向回滚段2中插入该记录1对应的回滚记录,该回滚记录包括在版本3的页面b中删除插入的记录1的信息;更新事务链时,可以设置插入记录1的事务号为T3,并设置事务号T3的操作事务指针,使得该T3的操作事务指针用于指向前一次操作(即对版本1的页面b等的操作)的事务号T2。
图5中用较细的实线箭头来表示数据页链,用较粗的实线箭头来表示事务链,用虚线箭头表示记录链。
(3)删除页面c中记录2的写操作,在数据库系统回滚段3中储存有页面c的多个旧版本页面。
参考图6所示,图中通过重叠在页面之后的方框表示多个页面,通过重叠在回滚段之后的方框表示多个页面分别对应的回滚段。当数据库系统接收到的数据写操作请求为删除页面c中插入记录2的数据写操作请求,其中包括写操作事务的SLT为1008。
在根据数据写操作请求对页面c进行操作之前,数据库系统中储存的页面c的当前版本为版本4,该版本4的页面c的数据页链包括版本4的页面c→对应的回滚段3中版本3的页面c→其它版本的页面c;版本4的页面c中关于记录2的记录链包括版本4的页面c中的记录2→版本3的页面c中的记录→其它版本的页面c中的记录。
在根据数据写操作请求对页面c操作时,先将版本4的页面c中的记录2的记录头标记为已删除,形成当前版本页面c,然后储存当前版本页面c,且将版本4的页面c储存到回滚段3中。由于版本4的页面c的SLT(为1117)大于写操作事务的SLT,则直接将版本4的页面c的SLT作为当前版本页面c的SLT;设置当前版本的页面c的页面指针,使得该当前版本的页面c的页面指针用于指向版本4的页面c,则该页面c的数据页链包括当前版本的页面c→版本4的页面c→版本2的页面c→其它版本的页面c;设置当前版本的页面c关于记录2的记录指针,使得该当前版本页面c中标记为已删除的记录2的记录指针用于2指向版本4的页面c中的记录,则该页面c中关于该记录2的记录链包括当前版本页面c中标记位已删除的记录2→版本4的页面c中记录→版本3的页面c中记录→其它版本页面c中记录;更新事务链时,可以设置删除记录2的事务号为T3,并设置事务号T3的操作事务指针,使得该T3的操作事务指针用于指向前一次操作(即对版本1的页面c等的操作)的事务号T2。
图6中用较细的实线箭头来表示数据页链,用较粗的实线箭头来表示事务链,用虚线箭头表示记录链。
(4)更新记录的写操作与上述插入记录的写操作类似,不同的是,在根据数据写操作请求对某一页面操作时,是将该页面上某条记录修改为数据写操作请求对应的记录。
本发明实施例还提供一种数据库系统,结构示意图如图7所示,包括:
读取接收单元10,用于接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;
读取单元11,用于如果所述读取接收单元10接收的数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;
页级回滚单元12,用于如果所述当前版本页面的时间戳大于所述读取接收单元10接收的数据读取请求中包括的读取事务的时间戳,通过所述请求读取的页面的数据页链中所述当前版本页面的页面指针进行页级回滚,将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;所述请求读取的页面的数据页链包括请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面。
可见,在数据库中设置一个页面的数据页链,该数据页链中包括该页面的各个版本页面的页面指针,而一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面,在本实施例的数据库系统在读取数据库中的版本页面时,如果当前版本页面的时间戳大于数据读取请求中包括对应的读取事务的时间戳,则页级回滚单元12直接可以根据所请求读取的页面的数据页链进行页级回滚到需要读取的页面,方便用户知道在任何时刻数据库中的页面,即方便对数据库中各个版本页面数据的查询。
参考图8所示,在一个具体的实施例中,数据库系统除了可以包括如图7所示的结构外,还可以包括行级回滚单元13、写操作接收单元14、写操作单元15、时间戳设置单元16和回滚设置单元17,其中:
行级回滚单元13,用于如果在所述进行页级回滚后的版本页面的时间戳所指示的时刻,所述页级回滚单元12进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;其中,所述记录链中包括所述请求读取的页面的各个版本页面所包括记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向所述一个版本记录的上一次操作前的另一版本记录即前一版本记录。该行级回滚单元13还可以针对上述读取单元11读取的当前版本页面进行上述操作,即将当前版本页面中处于操作状态的记录回滚到操作前的记录,实现一致性读取。
这样数据库系统中的行级回滚单元13和页级回滚单元12可以结合数据页链和记录链将页级回滚后的版本页面中处于操作状态的记录回滚到未修改时的记录,使得通过数据页链和记录链的结合可以高效地实现记录的回滚。
写操作接收单元14,用于接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对数据库的页面进行写操作,所述数据写操作请求中包括写操作事务的时间戳;
写操作单元15,用于读取所述写操作接收单元14接收的数据写操作请求对应的第一版本页面,根据所述写操作接收单元14接收的数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;所述第一版本页面是在执行所述写操作之前,所述数据库中储存的该数据写操作请求所请求的页面的最新版本页面,所述第二版本页面为在执行所述写操作后,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面。
时间戳设置单元16,用于根据所述写操作接收单元14接收的数据写操作请求中包括的写操作事务的时间戳设置所述第二版本页面的时间戳;时间戳设置单元16,具体用于如果所述第一版本页面的时间戳大于所述写操作接收单元14接收的数据写操作请求中写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;如果所述第一版本页面的时间戳小于所述写操作接收单元14接收的数据写操作请求中写操作事务的时间戳,则将所述第二版本页面的时间戳设置为所述写操作接收单元14接收的数据写操作请求中写操作事务的时间戳。
回滚设置单元17,用于更新所述数据库的事务链,以使其包括所述写操作事务的操作事务指针,所述事务链包括所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务,并设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。在一个具体的实施例中,参考图9所示,回滚设置单元17具体可以通过数据页链设置单元170、记录链设置单元171和事务链设置单元172来实现。
在本实施例中,数据库系统中对于数据库的写操作可以包括如下几种方式:
(1)当所述写操作接收单元14接收的数据写操作请求为请求在所述第一版本页面中插入记录的数据写操作请求,则写操作单元15具体用于在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面。
回滚设置单元17中的数据页链设置单元170用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;记录链设置单元171用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录,在回滚记录中包括在第一版本页面上该插入的记录已删除的信息;事务链设置单元172在更新所述数据库的事务链时,设置在所述第一版本页面上插入记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号。
(2)当所述写操作接收单元14接收的数据写操作请求为请求删除所述第一版本页面中记录的数据写操作请求,则所述写操作单元15还用于将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述回滚设置单元17中的数据页链设置单元170还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元171还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;所述事务链设置单元172在更新事务链时,可以设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述删除记录的写操作事务的前一次操作的事务号。
(3)当所述写操作接收单元14接收的数据写操作请求为请求更新所述第一版本页面中记录的数据写操作请求,则所述写操作单元15还用于根据数据写操作请求的指示,更新所述第一版本页面中的相应记录以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述回滚设置单元17中的数据页链设置单元170还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元171还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录指针用于指向所述第一版本页面上更新前的记录;所述事务链设置单元172在更新事务链时,设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
本发明实施例还提供另一种数据库系统,结构示意图如图10所示,包括分别连接到总线上的存储器20、处理器21、输入装置23和输出装置24,其中:
存储器20中用来储存从输入装置23输入的数据,且还可以储存处理器21处理数据的必要文件等信息,本实施例中存储器20储存以数据库的形式储存数据,即在存储器20中储存着数据库;本实施例中输入装置23和输出装置24是包括数据库系统外接的设备比如显示器、键盘、鼠标和打印机等,还可以包括数据库与其它设备通信的接口。
在本实施例的数据库系统中,输出装置24可以输出该数据库系统的用户接口,这样用户就可以通过该用户接口对数据库系统中的数据进行读取操作,当用户通过输入装置23发起数据读取事务时,会将数据读取请求传送给处理器21。
处理器21,用于接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;如果所述数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;如果所述当前版本页面的时间戳大于所述读取事务的时间戳,根据所述请求读取的页面的数据页链中所述当前版本页面的页面指针进行页级回滚,将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;所述请求读取的页面的数据页链包括所述请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向所述一个版本页面的上一次操作前的另一版本页面即前一版本页面。
进一步地,在处理器21进行页级回滚后,处理器21,还用于在所述进行页级回滚后的版本页面的时间戳所指示的时刻,如果所述进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;其中,所述记录链中包括所述请求读取的页面的各个版本页面所包含的记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向该记录的上一次操作前的另一版本记录即前一版本记录。
这样,在数据库中设置一个页面的数据页链,该数据页链中包括该页面的各个版本页面的页面指针,而一个版本页面的页面指针用于指向该版本页面的上一次操作前的另一版本页面即前一版本页面,在本实施例的数据库系统读取数据库中的页面时,如果当前版本页面的时间戳大于数据读取请求中包括对应的读取事务的时间戳,则处理器21直接可以根据所请求读取的页面的数据页链进行页级回滚到需要读取的版本页面,方便用户知道在任何时刻数据库中的页面,即方便对数据库中各个版本页面数据的查询。且处理器21可以结合记录链将页级回滚后的版本页面中处于操作状态的记录回滚到未修改时的记录,使得通过数据页链和记录链的结合可以高效地实现记录的回滚,实现一致性读取。
在一个具体的实施例中,用户可以通过输出装置24输出的该数据库系统的用户接口,对数据库中的数据进行写操作,当用户通过输入装置23发起数据写取事务时,会将数据写操作请求传送给处理器21。则处理器21还用于对数据库中页面进行写操作,具体地,接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对数据库的第一版本页面进行写操作,所述数据写操作请求中包括写操作事务的时间戳;读取所述数据写操作请求对应的第一版本页面,根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;设置根据所述写操作事务的时间戳设置所述第二版本页面的时间戳;更新所述数据库的事务链,以使其包括所述写操作事务的操作事务指针,所述事务链包括所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务;并设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。其中,所述第一版本页面是在执行所述写操作之前,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面,所述第二版本页面为在执行上述写操作后,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面。
且处理器21在设置第二版本页面的时间戳时,具体用于如果所述第一版本页面的时间戳大于所述写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;如果所属第一版本页面的时间戳小于所述写操作事务的时间戳,则将所述第二版本页面的时间戳设置为所述写操作接收单元14接收的数据写操作请求中写操作事务的时间戳。
在具体实现过程中,数据库系统中处理器21对于数据库的写操作可以包括如下几种方式:
(1)当处理器21接收的数据写操作请求为请求在所述第一版本页面中插入记录的数据写操作请求,则处理器21还用于在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面;设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录,在回滚记录中包括在第一版本页面上所述数据写操作请求所请求插入的记录已删除的信息;更新事务链时,设置在所述第一页面上插入记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号。
(2)当所述处理器21接收的数据写操作请求为请求删除所述第一版本页面中记录的数据写操作请求,则所述处理器21还用于将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记为已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;更新事务链时,设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述删除记录的写操作事务的前一次操作的事务号。
(3)当所述处理器21接收的数据写操作请求为请求更新所述第一版本页面中记录的数据写操作请求,则所述处理器21还用于根据数据写操作请求的指示,更新所述第一版本页面中的相应以得到第二版本页面,并储存所述第一版本页面和第二版本页面;设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录指针用于指向所述第一版本页面上更新前记录;更新事务链时,设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,RandomAccess Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种数据库的多版本并发控制方法及数据库系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种数据库中的多版本并发控制方法,其特征在于,包括:
接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;
如果所述数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;
如果所述当前版本页面的时间戳大于所述读取事务的时间戳,通过所述请求读取的页面的数据页链中所述当前版本页面的页面指针进行页级回滚,以将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;
其中,所述数据页链包括所述请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向该版本页面的前一版本页面。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果在所述进行页级回滚后的版本页面的时间戳所指示的时刻,所述进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;
其中,所述记录链中包括所述请求读取的页面的各个版本页面所包含的记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向该记录的前一版本记录。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对所述数据库中的页面进行写操作,所述数据写操作请求中包括所述写操作事务的时间戳;
读取所述数据写操作请求所请求的页面的第一版本页面,根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;所述第一版本页面是在执行所述写操作之前,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面;
根据所述写操作事务的时间戳设置所述第二版本页面的时间戳;
更新所述数据库的事务链,以使其包括所述写操作事务的操作事务指针,所述事务链包括所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务;
设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。
4.如权利要求3所述的方法,其特征在于,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求插入记录的数据写操作请求时,在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向所述第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录;所述回滚记录中包括在所述第一版本页面上所述数据写操作请求所请求插入的记录已删除的信息;
所述更新所述数据库的事务链,具体包括:设置在所述第一版本页面上插入记录的写操作事务的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号。
5.如权利要求3所述的方法,其特征在于,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求删除记录的数据写操作请求时,则将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向所述第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记为已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;
所述更新所述数据库的事务链,具体包括:设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针指向所述删除记录的写操作事务的前一次操作的事务号。
6.如权利要求3所述的方法,其特征在于,所述根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面,具体包括:当所述数据写操作请求为请求更新记录的数据写操作请求时,则根据所述数据写操作请求的指示,更新所述第一版本页面中的相应记录,以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述根据所述写操作事务的时间戳设置所述第二版本页面的时间戳,具体包括:将所述第二版本页面的时间戳设置为所述写操作事务的时间戳;
所述设置所述第二版本页面的回滚信息,具体包括:设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面用于指针指向第一版本页面;
设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录用于指针指向所述第一版本页面上更新前的记录;
所述更新所述数据库的事务链,具体包括:设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
7.如权利要求3至5任一项所述的方法,其特征在于,所述根据所述写操作事务的时间戳设置所述第二版本页面的时间戳,具体包括:
如果所述第一版本页面的时间戳大于所述写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;
如果所述第一版本页面的时间戳小于所述写操作事务的时间戳,将所述第二版本页面的时间戳设置为所述写操作事务的时间戳。
8.一种数据库系统,其特征在于,包括:
读取接收单元,用于接收读取事务产生的数据读取请求,所述数据读取请求用于请求读取所述数据库中的页面,所述数据读取请求中包括所述读取事务的时间戳;
读取单元,用于如果所述读取接收单元接收的数据读取请求所请求读取的页面的当前版本页面的时间戳小于或等于所述读取事务的时间戳,读取所述数据读取请求所请求读取的页面的当前版本页面;
页级回滚单元,用于如果所述当前版本页面的时间戳大于所述读取事务的时间戳,通过所述请求读取的页面的数据页链中当前版本页面的页面指针进行页级回滚,将所述当前版本页面回滚到时间戳小于或等于所述读取事务的时间戳的版本页面;
所述数据页链包括所述请求读取的页面的各个版本页面的页面指针,其中每一个版本页面的页面指针用于指向所述该版本页面的前一版本页面。
9.如权利要求8所述的数据库系统,其特征在于,所述系统还包括:
行级回滚单元,用于如果在所述页级回滚单元进行页级回滚后的版本页面的时间戳所指示的时刻,所述进行页级回滚后的版本页面中的一条或多条记录处于操作状态,则根据所述请求读取的页面的记录链中包含的所述一条或多条记录的记录指针进行行级回滚,将所述处于操作状态的记录回滚到操作前的记录;
其中,所述记录链中包括所述请求读取的页面的各个版本页面所包括记录的记录指针,其中一个版本页面中一个记录的记录指针用于指向该记录的前一版本记录。
10.如权利要求9所述的数据库系统,其特征在于,还包括:
写操作接收单元,用于接收写操作事务产生的数据写操作请求,所述数据写操作请求用于请求对所述数据库中的页面进行写操作,所述数据写操作请求中包括写操作事务的时间戳;
写操作单元,用于读取所述数据写操作请求对应的第一版本页面,根据所述数据写操作请求对所述第一版本页面进行写操作以得到第二版本页面;所述第一版本页面是在执行所述写操作之前,所述数据库中储存的所述数据写操作请求所请求的页面的最新版本页面;
时间戳设置单元,用于根据所述写操作事务的时间戳设置所述第二版本页面的时间戳;
回滚设置单元,用于更新所述数据库中的事务链,以使得所述事务链包括所述写操作事务的操作事务指针,所述事务链包括对所述数据库的页面中记录的多个操作事务指针,其中每一个操作事务指针用于指向对所述数据库的页面中记录的前一次操作事务;并设置所述第二版本页面的回滚信息,所述回滚信息包括页面指针和记录指针。
11.如权利要求10所述的数据库系统,其特征在于,
所述写操作单元,具体用于当所述写操作接收单元接收的数据写操作请求为请求在所述第一版本页面中插入记录的数据写操作请求时,在所述第一版本页面中插入所述数据写操作请求所请求插入的记录以得到第二版本页面,储存所述第一版本页面和第二版本页面;
所述回滚设置单元,具体包括:数据页链设置单元,用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;记录链设置单元,用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上所述插入记录的记录指针用于指向所述插入记录对应的回滚记录;事务链设置单元,用于设置在所述第一版本页面上插入记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向在所述第一版本页面上插入记录的写操作事务的前一次操作的事务号;所述回滚记录中包括在所述第一版本页面上所述数据写操作请求所请求插入的记录已删除的信息。
12.如权利要求11所述的数据库系统,其特征在于,
所述写操作单元,还用于当所述写操作接收单元接收的数据写操作请求为请求删除所述第一版本页面中记录的数据写操作请求时,将所述第一版本页面中所述数据写操作请求所请求删除的记录标记为已删除以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述数据页链设置单元,还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元,还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上标记为已删除的记录的记录指针用于指向所述第一版本页面上所述数据写操作请求所请求删除的记录;所述事务链设置单元,还用于设置所述删除记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述删除记录的写操作事务的前一次操作的事务号。
13.如权利要求11所述的数据库系统,其特征在于,
所述写操作单元,还用于当所述写操作接收单元接收的数据写操作请求为请求更新所述第一版本页面中记录的数据写操作请求时,根据所述数据写操作请求的指示,更新所述第一版本页面中的相应记录,以得到第二版本页面,并储存所述第一版本页面和第二版本页面;
所述数据页链设置单元,还用于设置所述第二版本页面的页面指针,以使得所述第二版本页面的页面指针用于指向第一版本页面;所述记录链设置单元,还用于设置所述第二版本页面的记录指针,以使得所述第二版本页面上更新后的记录的记录指针用于指向所述第一版本页面上更新前的记录;所述事务链设置单元,还用于设置所述更新记录的写操作事务对应的事务号,且设置所述事务号对应的操作事务指针,以使得所述操作事务指针用于指向所述更新记录的写操作事务的前一次操作的事务号。
14.如权利要求10至12任一项所述的数据库系统,其特征在于,
所述时间戳设置单元,具体用于如果所述第一版本页面的时间戳大于所述写操作事务的时间戳,则将所述第一版本页面的时间戳作为所述第二版本页面的时间戳;如果所述第一版本页面的时间戳小于所述写操作事务的时间戳,将所述第二版本页面的时间戳设置为所述写操作事务的时间戳。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750940.8A CN103744936B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库中的多版本并发控制方法及数据库系统 |
PCT/CN2014/082794 WO2015101025A1 (zh) | 2013-12-31 | 2014-07-23 | 一种数据库中的多版本并发控制方法及数据库系统 |
EP14876808.8A EP3079078B1 (en) | 2013-12-31 | 2014-07-23 | Multi-version concurrency control method in database, and database system |
US15/199,181 US9953051B2 (en) | 2013-12-31 | 2016-06-30 | Multi-version concurrency control method in database and database system |
US15/919,469 US20180203888A1 (en) | 2013-12-31 | 2018-03-13 | Multi-Version Concurrency Control Method in Database and Database System |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310750940.8A CN103744936B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库中的多版本并发控制方法及数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103744936A CN103744936A (zh) | 2014-04-23 |
CN103744936B true CN103744936B (zh) | 2017-02-08 |
Family
ID=50501954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310750940.8A Active CN103744936B (zh) | 2013-12-31 | 2013-12-31 | 一种数据库中的多版本并发控制方法及数据库系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9953051B2 (zh) |
EP (1) | EP3079078B1 (zh) |
CN (1) | CN103744936B (zh) |
WO (1) | WO2015101025A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019375A (zh) * | 2019-04-18 | 2019-07-16 | 哈尔滨汇拓投资中心(有限合伙) | 一种基于在线聚合的多版本并行混合处理方法 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744936B (zh) | 2013-12-31 | 2017-02-08 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
CN105574022B (zh) * | 2014-10-14 | 2020-04-17 | 阿里巴巴集团控股有限公司 | 一种基于关系数据库的业务对象的处理方法和装置 |
US9928264B2 (en) * | 2014-10-19 | 2018-03-27 | Microsoft Technology Licensing, Llc | High performance transactions in database management systems |
CN104317944B (zh) * | 2014-10-31 | 2018-07-06 | 上海实方软件有限公司 | 一种基于公式的时间戳动态调整并发控制方法 |
JP6611594B2 (ja) * | 2015-03-16 | 2019-11-27 | キヤノン株式会社 | データの同期を行う情報処理装置、データ同期方法およびプログラム |
EP3070619B1 (en) | 2015-03-16 | 2023-08-16 | Canon Kabushiki Kaisha | Information processing apparatuses performing synchronization of data and data synchronization methods |
US9892004B2 (en) * | 2015-09-18 | 2018-02-13 | Vmware, Inc. | Space efficient persistence of an in-memory table |
CN107451172B (zh) * | 2016-03-31 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 用于版本管理系统的数据同步方法及设备 |
CN107577678B (zh) * | 2016-06-30 | 2021-02-09 | 华为技术有限公司 | 处理数据库事务的方法、客户端和服务器 |
US10346384B2 (en) * | 2016-11-22 | 2019-07-09 | Sap Se | Efficient database multi-version concurrency control |
US10169392B2 (en) * | 2017-03-08 | 2019-01-01 | International Business Machines Corporation | Persistent data structures on a dispersed storage network memory |
CN107085603B (zh) * | 2017-03-31 | 2020-04-03 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
US10725763B1 (en) * | 2017-06-28 | 2020-07-28 | Amazon Technologies, Inc. | Update and rollback of configurations in a cloud-based architecture |
US10379838B1 (en) | 2017-06-28 | 2019-08-13 | Amazon Technologies, Inc. | Update and rollback of code and API versions |
CN109408673B (zh) * | 2018-09-06 | 2021-07-20 | 北京云迹科技有限公司 | 地图管理方法和管理平台 |
CN109947742B (zh) * | 2019-02-28 | 2021-08-03 | 上海交通大学 | 面向二阶段锁的多版本数据库并发控制方法和系统 |
US11321354B2 (en) * | 2019-10-01 | 2022-05-03 | Huawei Technologies Co., Ltd. | System, computing node and method for processing write requests |
US11836130B2 (en) * | 2019-10-10 | 2023-12-05 | Unisys Corporation | Relational database blockchain accountability |
CN110825752B (zh) * | 2019-10-16 | 2020-11-10 | 深圳巨杉数据库软件有限公司 | 基于无碎片回收的数据库多版本并发控制系统 |
CN111090663B (zh) * | 2019-12-25 | 2023-07-07 | 上海金仕达软件科技股份有限公司 | 事务并发控制方法、装置、终端设备及介质 |
CN113127440A (zh) * | 2019-12-31 | 2021-07-16 | 阿里巴巴集团控股有限公司 | 数据操作方法、装置、电子设备及存储介质 |
CN111159160B (zh) * | 2019-12-31 | 2023-06-20 | 卓米私人有限公司 | 一种版本回滚方法、装置、电子设备及存储介质 |
CN111459920B (zh) * | 2020-05-15 | 2021-01-15 | 北京谷数科技股份有限公司 | 基于虚拟全局时钟同步的多版本并发控制方法及系统 |
JP2022039654A (ja) * | 2020-08-28 | 2022-03-10 | キオクシア株式会社 | メモリシステム |
US11599514B1 (en) * | 2021-03-29 | 2023-03-07 | Amazon Technologies, Inc. | Transactional version sets |
US11709809B1 (en) | 2021-03-29 | 2023-07-25 | Amazon Technologies, Inc. | Tree-based approach for transactionally consistent version sets |
US11886422B1 (en) | 2021-03-29 | 2024-01-30 | Amazon Technologies, Inc. | Transactional protocol for snapshot isolation without synchronized clocks |
US11714573B1 (en) | 2021-03-29 | 2023-08-01 | Amazon Technologies, Inc. | Storage optimization in a distributed object store |
CN114297217A (zh) * | 2021-12-31 | 2022-04-08 | 深圳市兆珑科技有限公司 | 事务并发控制方法、装置、电子设备及可读存储介质 |
US20240061786A1 (en) * | 2022-08-22 | 2024-02-22 | Samsung Electronics Co., Ltd. | Systems, methods, and apparatus for accessing data in versions of memory pages |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1842789A (zh) * | 2004-03-29 | 2006-10-04 | 微软公司 | 用于在数据库恢复期间快照查询的系统和方法 |
CN101477445A (zh) * | 2008-01-03 | 2009-07-08 | 国际商业机器公司 | 用于写前读存储控制器指令的装置、系统和方法 |
CN102591993A (zh) * | 2012-02-16 | 2012-07-18 | 中国工商银行股份有限公司 | 一种用于热表数据更新的异步处理方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287496A (en) * | 1991-02-25 | 1994-02-15 | International Business Machines Corporation | Dynamic, finite versioning for concurrent transaction and query processing |
US6125368A (en) * | 1997-02-28 | 2000-09-26 | Oracle Corporation | Fault-tolerant timestamp generation for multi-node parallel databases |
US7395278B2 (en) * | 2003-06-30 | 2008-07-01 | Microsoft Corporation | Transaction consistent copy-on-write database |
US8856083B2 (en) * | 2006-06-09 | 2014-10-07 | Oracle International Corporation | Framework to optimize delete all row operations on database objects to improve throughput, query ability and flashback |
US8396831B2 (en) * | 2009-12-18 | 2013-03-12 | Microsoft Corporation | Optimistic serializable snapshot isolation |
US8407195B2 (en) * | 2011-03-07 | 2013-03-26 | Microsoft Corporation | Efficient multi-version locking for main memory databases |
US9053003B2 (en) * | 2012-06-21 | 2015-06-09 | Microsoft Technology Licensing, Llc | Memory compaction mechanism for main memory databases |
CN103744936B (zh) * | 2013-12-31 | 2017-02-08 | 华为技术有限公司 | 一种数据库中的多版本并发控制方法及数据库系统 |
-
2013
- 2013-12-31 CN CN201310750940.8A patent/CN103744936B/zh active Active
-
2014
- 2014-07-23 EP EP14876808.8A patent/EP3079078B1/en active Active
- 2014-07-23 WO PCT/CN2014/082794 patent/WO2015101025A1/zh active Application Filing
-
2016
- 2016-06-30 US US15/199,181 patent/US9953051B2/en active Active
-
2018
- 2018-03-13 US US15/919,469 patent/US20180203888A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1842789A (zh) * | 2004-03-29 | 2006-10-04 | 微软公司 | 用于在数据库恢复期间快照查询的系统和方法 |
CN101477445A (zh) * | 2008-01-03 | 2009-07-08 | 国际商业机器公司 | 用于写前读存储控制器指令的装置、系统和方法 |
CN102591993A (zh) * | 2012-02-16 | 2012-07-18 | 中国工商银行股份有限公司 | 一种用于热表数据更新的异步处理方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019375A (zh) * | 2019-04-18 | 2019-07-16 | 哈尔滨汇拓投资中心(有限合伙) | 一种基于在线聚合的多版本并行混合处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103744936A (zh) | 2014-04-23 |
US20160314161A1 (en) | 2016-10-27 |
EP3079078B1 (en) | 2018-11-28 |
WO2015101025A1 (zh) | 2015-07-09 |
EP3079078A1 (en) | 2016-10-12 |
US9953051B2 (en) | 2018-04-24 |
US20180203888A1 (en) | 2018-07-19 |
EP3079078A4 (en) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103744936B (zh) | 一种数据库中的多版本并发控制方法及数据库系统 | |
CN105630863B (zh) | 用于多版本并发提交状态的事务控制块 | |
CN103714090B (zh) | 多索引数据库事务处理方法及数据库 | |
CN102640151B (zh) | 用于传输日志记录的方法和系统 | |
CN104412241B (zh) | 用于主存储器数据库的存储器紧缩机制 | |
US7805568B2 (en) | Method and apparatus for data storage using striping specification identification | |
US8700674B2 (en) | Database storage architecture | |
CN109086388B (zh) | 区块链数据存储方法、装置、设备及介质 | |
US7418544B2 (en) | Method and system for log structured relational database objects | |
CN105868228A (zh) | 为olap和oltp事务提供无锁读取和写入操作的内存数据库系统 | |
CN103412803B (zh) | 数据恢复的方法及装置 | |
US10754854B2 (en) | Consistent query of local indexes | |
US8396833B2 (en) | Inode management in redirect-on-write file system | |
US8856083B2 (en) | Framework to optimize delete all row operations on database objects to improve throughput, query ability and flashback | |
CN103593449B (zh) | 一种数据库资源回收方法及系统 | |
US8600962B2 (en) | Transaction processing device, transaction processing method, and transaction processing program | |
CN115617571A (zh) | 一种数据备份方法、装置、系统、设备及存储介质 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
US20120317384A1 (en) | Data storage method | |
US7542983B1 (en) | Delaying automated data page merging in a B+tree until after committing the transaction | |
CN114691307A (zh) | 事务处理方法及计算机系统 | |
JP2005234945A (ja) | 同時実行制御方法及び装置 | |
RU2647648C1 (ru) | Способ организации хранения исторических дельт записей | |
CN109760044A (zh) | 一种数据处理方法及装置 | |
CN117931873A (zh) | 面向utxo模型区块链的链上交易数据快速解析方法 |
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 |