CN106462586B - 基于记录的多版本并发控制的一致性读取的方法和系统 - Google Patents

基于记录的多版本并发控制的一致性读取的方法和系统 Download PDF

Info

Publication number
CN106462586B
CN106462586B CN201580014605.9A CN201580014605A CN106462586B CN 106462586 B CN106462586 B CN 106462586B CN 201580014605 A CN201580014605 A CN 201580014605A CN 106462586 B CN106462586 B CN 106462586B
Authority
CN
China
Prior art keywords
txid
record
start point
creation
transaction
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
Application number
CN201580014605.9A
Other languages
English (en)
Other versions
CN106462586A (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.)
Huawei Technologies 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
Publication of CN106462586A publication Critical patent/CN106462586A/zh
Application granted granted Critical
Publication of CN106462586B publication Critical patent/CN106462586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/2315Optimistic concurrency control
    • G06F16/2322Optimistic concurrency control using timestamps
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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
    • 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/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/2379Updates performed during online database operations; commit processing
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

提供了系统和方法实施例,用于基于记录的多版本并发控制(Multi‑Version Concurrency Control,MVCC)数据库(database,DB)管理系统中的一致性读取。在一实施例中,一种基于记录的多版本并发控制(Multi‑Version Concurrency Control,MVCC)数据库(database,DB)管理系统中用于快照一致性读取的方法包括:从阅读器起点的事务日志中复制系统提交事务标识(transaction identifier,TxID)和当前日志记录序号(log record sequence number,LSN),而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;根据记录TxID、提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。

Description

基于记录的多版本并发控制的一致性读取的方法和系统
相关申请案交叉申请
本申请要求于2014年3月28日递交的发明名称为“基于记录的多版本并发控制的一致性读取的有效方法和系统”的第“14/229,519”号美国专利申请案的在先申请优先权,其全部内容通过引用结合在本申请中。
本申请要求于2014年3月28日递交的发明名称为“索引中优化多版本支持的系统和方法”的第“14/229,638”号美国专利申请案的在先申请优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明涉及在数据库管理系统中基于记录的多版本并发控制的系统和方法,在实施例中,尤其涉及在数据库管理系统中一致性读取基于记录的多版本并发控制的系统和方法。
背景技术
现代数据库管理系统中,多版本并发控制(Multi-Version ConcurrencyControl,MVCC)是基本机制,实现高并发性来允许阅读器而不阻塞更新器和允许更新器而不阻塞阅读器,实现快照读取一致性,而这对很多应用至关重要。MVCC可被归为基于页和基于记录的方法,典型地与UNDO和日志记录机制结合。基于记录的方法可使用历史(差异)记录链接的链以用于记录的历史。为了读取在某一时间的记录,系统遍历所述链来找到在所述时间提交的最后记录。
发明内容
根据一实施例,一种基于记录的多版本并发控制(Multi-Version ConcurrentControl,MVCC)数据库(database,DB)管理系统中用于快照一致性读取的方法包括:从阅读器起点的事务日志中复制系统提交事务标识(transaction identifier,TxID)和当前日志记录序号(log record sequence number,LSN),而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;根据记录TxID、提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。
根据一方面,一种基于记录的多版本并发控制(Multi-Version ConcurrentControl,MVCC)数据库(database,DB)管理系统中用于快照一致性读取的装置包括:复制构件,用于从阅读器起点的事务日志中复制系统提交事务标识(transaction identifier,TxID)和当前日志记录序号(log record sequence number,LSN),而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;确定构件,用于根据记录TxID、提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。
根据上述方面的一实施形式,所述装置的所述确定构件还用于:当所述记录的创建TxID小于所述事务起点处的系统提交TxID或所述事务本身创建所述记录时,确定所述记录可见。
根据上述方面的另一实施形式,所述装置的所述确定构件还用于:当所述记录创建TxID被提交且所述创建TxID的结束时间戳(end time stamp,ETS)小于所述事务起点处的当前LSN,确定所述记录可见。
根据上述方面的一实施形式,所述装置的所述确定构件还用于:当创建TxID大于或等于所述事务起点处的提交TxID且满足两个条件中的一个时,确定所述记录不可见,其中,所述情况包括:确定未提交的创建TxID大于或等于所述事务起点处的当前LSN,以及确定创建TxID的结束时间戳(end time stamp,ETS)大于或等于所述事务起点处的当前LSN。
根据上述方面的一实施形式,所述装置的所述确定构件还用于:当删除TxID小于所述事务起点处的提交TxID或所述事务本身作出删除时,判断所述记录是根据删除标志删除的。
根据上述方面的一实施形式,所述装置的所述确定构件还用于:当删除TxID被提交且所述删除TxID的结束时间戳(end time stamp,ETS)小于所述事务开始处的当前LSN,判断所述记录是根据删除标志删除的。
根据上述方面的任何实施形式,所述装置的所述确定构件还用于:确定是否根据与记录对应的索引叶子页记录中的删除指示删除了记录;在未删除所述记录时,根据索引叶子页中的新记录指示并根据事务开始处的系统提交事务标识(transactionidentifier,TxID)与从所述索引叶子页记录得到的记录创建TxID的比较,确定所述记录是否可见;处理器,用于执行所述确定步骤的结果。
根据上述管理数据库的所述装置的任何实施形式,所述确定构件还用于将删除TxID与所述事务开始处的系统提交TxID进行比较,其中,当所述删除指示指示所述记录被删除时且当所述删除TxID的结束时间戳(end time stamp,ETS)小于或等于事务开始处的系统提交TxID时,所述记录被删除。
根据上述管理数据库的所述装置的任何实施形式,所述确定构件还用于:当删除TxID被提交且所述删除TxID的ETS小于所述事务开始处的当前日志序号(log recordsequence number,LSN)时,判断所述记录被删除。
上述方案通过Commit_TxID(或Commit_LSN)优化了存储紧缩。紧缩后,版本信息只有1比特。
根据一实施例,一种用于管理数据库的数据处理系统包括:处理器和计算机可读存储介质,用于存储所述处理器的执行程序,其中,所述程序包括指令,用于:从阅读器起点的事务日志中复制系统提交事务标识(transaction identifier,TxID)和当前日志记录序号(log record sequence number,LSN),而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;根据记录TxID、所述提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。
根据一实施例,一种基于记录的多版本并发控制(Multi-Version ConcurrencyControl,MVCC)数据库(database,DB)管理系统包括:事务表,包括所述系统中多个事务中的每个事务的状态,其中,每个事务被按事务标识(transaction identifier,TxID)索引,这些TxID随着时间单一增加,提交TxID是所述事务表中活动事务的最旧的ID;存储子系统,用于存储多个版本的记录和每个记录的更新历史,其中,每个记录都包括创建或删除所述记录的事务TxID;日志记录子系统,包括处理器,其中,所述日志记录子系统用于追踪所述存储子系统的所有变化并用于使用日志记录序号(log record sequence number,LSN)来进行序列比对和恢复;阅读器,用于仅仅复制系统提交TxID和当前LSN,根据事务起点处的记录TxID、提交TxID和当前LSN,确定记录是否可见,而无需查阅所述事务表,除非所述记录TxID等于或大于所述事务起点处的提交TxID。
MVCC是DBMS引擎中的基本技术。简单而有效的算法具有高需求。通过应用上述方案,为数据管理简化了MVCC的实现。通过有效的可见性检查,所述系统复杂度可更低且更稳健。
更具体的,基于记录的MVCC使用记录中的事务ID,
而使用事务提交LSN来检查可见性,可见性查看所需要的保存在阅读器开始处的变量较小,可避免当事务开始时的现有SQL热点。
更具体的优点是,与现有SQL服务器方法相比,上述方案避免了将事务ID替换为事务接触的记录相应的提交LSN。还提供了使用Commit_TxID优化的效率。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1示出了一实施例的基于记录的MVCC的架构的方框图。
图2示出了一实施例的表空间内的记录格式的方框图。
图3示出了一实施例的读取MVCC数据库中记录的方法的流程图。
图4示出了根据一实施例的运算平台,可用于实现,例如,此处描述的设备和方法。
具体实施方式
下文将详细论述当前示例性实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。
相比于回滚全部页来找到正确记录的基于页的MVCC机制,基于记录的方法更简单也会更有效。本发明的一个重点在于基于记录的MVCC方法,尤其是实现有效读取一致性和快照读取一致性。
所述快照读取一致性是对阅读器(事务或查询)读取所述阅读器开始时提交的最后记录。每个记录都在逻辑上标有其事务信息。当事务更新记录时,事务并不知道其本身提交时间戳,而是往往由提交日志序号或事务提交LSN来表示。因此,事务ID被记录在由更新事务写入的记录中。只有在提交时间,才知道事务提交LSN。事务提交LSN用于测试记录对于阅读器是否可见。事务提交LSN在记录创建时或更新时未知而一致性读取对提交LSN有要求的情况提出了一个具有挑战性的问题,而优化对有效的方法是至关重要的。
另一个方法是保存用于记录事务ID和事务终结时间之间映射关系的事务表,例如,提交LSN或中止的LSN。然而,为了加速一致性读取而又不至于延长提交,在事务被提交后,事务所改变的记录中的事务ID被其在后台中的提交LSN所替换。一比特可用于区分TxID和记录标头中的事务提交LSN(transaction commit LSN,Tx_CLSN)。对提交LSN的回填仍旧是一项高成本的操作。
这里公开了一种快照读取的方法和系统,不需要替换记录中的事务ID,同时通过将系统范围的Commit_TxID(Commit_TransactionID)作为优化以实现有效的一致性读取。Commit_TxID类似于C·莫汉提出的Commit_LSN,用以对记录的提交/可见性的测试进行优化。事务ID单一增加。若事务在运行中或是中止了但没有物理地回滚,该事务就被称为是活动的。(系统)Commit_TxID被定义为最旧的在系统中仍旧是活动的事务ID。注意:所有中止的记录或ID小于这个事务ID的回滚的事务的记录都是物理上的UNDONE。这意味着所有事务ID小于这个Commit_TxID的记录会被提交。系统继续维持Commit_TxID。当阅读器(事务或查询)开始时,系统保存myCommit_TxID中的当前Commit_TxID值,用于与记录中的事务ID进行比较,进而确定记录是否在所述阅读器开始时的时间提交。所述系统还为阅读器记录所述当前LSN。在事务ID大于或等于所述Commit_TxID的情况下,查阅事务表找到事务ID的commit_LSN,基于LSN比较可作出决定。因为数据库系统中大部分的记录被提交了,只有很少比例的记录需要查阅所述事务表。因为一些记录将会有事务ID,所以即使是将commit_LSN替换回填到记录也需要查询操作。避免将事务ID替换为commit_LSN使得这个方法更简单也更稳健,并且在大多情况下更有效。
在一实施例中,相比于类似的基于UNDO的方法,本发明一方面中没有将事务的提交LSN回填到改变的记录。尽管其可以通过下面的事务回滚/撤销链实现,但是提交LSN的回填对正常的事务处理有干扰,尤其是对输入/输出(input/output,I/O)和中央处理器(central processing unit,CPU)/缓存行为有影响。回填方法要求对所述事务表进行回填方法遇到的事务ID的检查,而实施例公开的方法则限制对所述事务表进行等于或大于myCommit_LSN的事务ID的检查。等于或大于myCommit_LSN的事务ID应该较小。更进一步地,避免回填具有较大的益处。
同时,在一实施例中,相比于PostgreSQL中使用的不采用UNDO的方法,所公开的不同于PostgreSQL的一方面在于对提交进行快照语义的检查更简单。PostgreSQL中,PostgreSQL需要复制阅读器(所有活动的事务ID)开始处的整个(逻辑的)事务表,所述事务表变为热点。此外,PostgreSQL需要比本发明实施例更多的空间。而且,PostgreSQL中,对于历史中的事务,因为按中止的事务的记录并未进行物理上的回滚,所以所有的事务历史需要保存有位图,直到数据批清理完成(真空),这往往对系统造成性能影响。
在一实施例中公开了比基于页的MVCC更简单且质量更轻的基于记录的MVCC。在一实施例中,事务提交LSN被用于检查记录的可见性。
图1示出了一实施例的基于记录的MVCC的架构100的方框图。在一实施例中,所述架构100包括数据页MVCC和索引MVCC,而索引MVCC的方法基本不依赖于数据页MVCC。本发明的一个重点是数据页MVCC。
所述架构100包括数据页120(或表空间内的基础数据记录)、事务表102、日志132、UNDO/版本存储126和B树索引子系统104。所述事务表102保存有事务信息。所述事务表102包括多个条目:TxID、状态、开始时间戳(start time stamp,STS)、结束时间戳(end timestamp,ETS)和多个记录的撤销记录链。所述状态可为已提交(committed,C)、已中止(aborted,A)和运行中(inflight,I)。所述事务表102中的撤销条目表示一个版本存储记录ID作为当前事务的撤销记录链中的撤销起点。
所述日志132包括以恢复为目的的常规表空间(tablespace,TS)(例如,数据页120)的变化和版本TS(例如,UNDO/版本存储126)的变化。所述日志132还包括提交的记录、记录的提交LSN和当前LSN。所述UNDO/版本存储126存储旧版本的记录。所述数据页120中的基础数据记录和所述UNDO/版本存储126中的历史记录之间有链接。所述UNDO/版本存储126包括记录版本和每个事务(未示出)的UNDO链的链接128和130。因此,版本2(version 2,v2)的链接指向版本1(version 1,v1)的链接作为记录的版本。
所述数据页120包括当前版本记录122和删除的记录124。在一实施例中,所述B树索引子系统104包括B树1 106和B树2 108。B树106和108分别包括对应的叶子页110和112。叶子页110和112分别包括指向所述数据页120中的现版本记录3 122或指向所述数据页120中的删除的版本记录124的指针114和116。
在一实施例中,B树叶子页(或其他索引结构)中的记录会保存其创建和删除的事务信息,以便于实现一致性读取,而无需查看数据记录。也不需要将旧版本移到单独的存储空间内。旧记录可被清除(若删除)或被紧缩,从而提升空间和时间效率。在一实施例中,这些可通过Commit_TxID或Commit_LSN来优化。
在一实施例中,使用关于创建或删除记录的事务的信息来扩展叶子页记录,进而实现多版本对B树索引的支持。所述系统保存有事务表中的所有事务状态,并且在日志中记下变化。日志(记录)序号(log(record)sequence number,LSN)用于标识页和记录的状态。当事务开始时,所述事务分配有事务ID和开始时间戳(LSN)。所述事务引起的所有变化都可暂时用事务ID(或TxID)标记。当所述事务提交时,所述事务具有提交LSN。一致性读取基于提交LSN来实现快照一致性,例如,阅读器可只读取阅读器开始时所提交的记录。换句话说,若记录未被删除且其事务的提交LSN小于阅读器的LSN,则所述记录对阅读器可见。
比较LSN有两种方法。一种是当事务提交时或当事务提交后,用记录中的LSN替换TxID。另一种是在所述事务表中查找TxID,从而找到事务状态及其提交LSN用于比较。通过采用系统范围的Commit_LSN或Commit_TxID,可以优化这两种方法。Commit_LSN被定义为最大的LSN,使得在这个LSN之前所有的日志记录都被提交了。类似地,Commit_TxID是最大的事务ID,使得在这个TxID之前所有的事务都被提交了,在这个TxID之前回滚的事务的所有的记录都被物理上地撤销了。因此,在一实施例中,用于支持并优化索引MVCC的主要的技术为:
1.对具有事务信息的叶子页记录进行增大。不需要为索引记录存储单独的版本。
2.可从记录中去除或用1比特替换创建事务ID(创建TxID或CTxID)或提交LSN,来指示记录是旧的且比系统范围的Commit_TxID或Commit_LSN(比最旧的阅读器LSN还旧)还旧。
3.若记录的删除LSN或TxID比系统范围的Commit_TxID或Commit_LSN还旧,则可清除删除的记录。
动作2和3被称为紧缩且可在查找空间时的页拆分前执行。紧缩后,版本信息变成了1比特,因为大部分的记录会被紧缩,所以使得相比于其他方法,就空间要求而言,索引多版本的成本更少。查找操作中,通过为记录中的事务ID或提交LSN比较Commit_TxID或Commit_LSN并只在事务表102中查阅更新记录可极大的优化记录可见性的检查,所述更新的记录往往在所有记录中仅为很少占比。类似的紧缩技术可应用于数据页的数据记录。
图2示出了一实施例的表空间内的记录格式200的方框图。所述记录格式200包括四类记录204、206、208和210。记录204、206、208和210分别包括记录标头和记录内容。记录标头以指示记录格式细节的标志为开始。在一实施例中,所述标志包括:删除标志,指示所述记录204、206、208和210是正常的记录还是删除的记录;以及更新标志,指示所述记录204、206、208和210是原始的记录还是更新的记录。记录204、206、208和210每种类型的特定的标志值202都分别标在记录204、206、208和210的左边。在一实施例中,记录204的记录标头包括标志和创建事务ID(creation transaction ID,CTxID),其中所述标志为00,表示正常的原始的记录(例如,没有版本存储记录ID(version store record ID,VSRID)的记录)。记录206是删除的原始的记录。记录206的记录标头包括标志、CTxID和删除事务ID(deletion transaction ID,DTxID)。记录206的标志为10,表示记录206是删除的记录且为原始的记录(例如,没有VSRID)。记录208是正常的(即,不是删除的)更新的记录。记录208的记录标头包括标志、CTxID和VSRID。记录208的标志为01,表示记录208是正常的(不是删除的)记录且记录208为更新的记录。更新的记录包括VSRID。记录210的记录标头包括标志、CTxID、DTxID和VSRID。记录210的标志为11,表示记录210是删除且更新的记录。因为记录210是删除的记录,所以记录210包括DTxID。因为记录210是更新的记录,所以记录210包括VSRID。在一实施例中,每个标志都是1个字节。在一实施例中,CTxID是4个字节。在一实施例中,DTxID是4个或5个字节。在一实施例中,VSRID是4个或5个字节。除了如图2所示的实施例,记录204、206、208和210的实施可能有变化。在一实施例中,VSRID用作历史记录的链接。历史记录可能有类似的格式或利用差异来降低存储空间消耗。
回到图1,事务表102的维护已然十分了解。当事务提交或中止时,可实现Commit_TxID的维护。最初,Commit_TxID是所述事务表中最小的TxID。若当前Commit_TxID相邻的事务提交,则Commit_TxID会前进。直到下个事务中止或运行之前,一直重复这个步骤。
若事务中止,则有两个选择:立刻UNDO或延迟UNDO。立刻UNDO的情况下,系统100将物理上撤销事务在中止完成前造成的变化。延迟UNDO的情况下,系统100将通过后台进程来物理上回滚事务造成的变化。一旦物理上完成所述回滚/撤销,Commit_TxID就能前进到下一个。一旦Commit_TxID前进,就可以清除Commit_TxID之前的条目了。
在一实施例中,圆形阵用于实现事务表102。
本领域技术人员都了解日志132与Commit_LSN的实现。
任何更新协议都可用于锁定等。在一实施例中,只要求基于从最近版本到最旧版本的顺序将记录串连起来。可利用任何方法来将记录拆分到常规表空间120和撤销表空间126。
在一实施例中,一致性是指快照隔离(事务开始时间的快照)。在另一实施例中,一致性是指提交的读取(查询开始时间的快照)。关于一致性的每个实施方式都可使用相同的逻辑,唯一的区别在于测试记录提交所使用的不同点的值:快照隔离是在事务开始时间而提交的读取是在查询/声明开始时间。本发明利用术语“事务开始时”进行说明。
阅读器开始处:记录当前Commit_TxID和当前LSN,还有阅读器的TxID。这些分别被称为:myCommit_TxID、MyLSN和myTxID。
在一实施例中,按从最新的(例如,v2 130)到最旧的(例如,v1 128)将更新的记录126串连起来。当读取记录时,应用下列逻辑。图3所示流程图和下列描述的示出了用于读取记录的详细逻辑的实施例。根据实施例,下列描述着重解释了读取记录的一些情况。
若记录未被删除且未更新(例如,标志=00)
若CTxID<myCommit_TxID,则提交所述记录,或者若CTxID=myTxID,则
这个事务创建了记录,因此记录可见,并读取记录内容。
否则,CTxID≥myCommit_TxID,在事务表中查找CTxID,
若CTxID事务被提交了且CTxID的ETS<myLSN,在阅读器开始前提交了所述事务,则读取内容。
否则,忽略记录。
若记录未被删除但更新了(例如,标志=01),
则为CTxID应用与上述同样的逻辑,一直到最后一行
而不是忽视记录,必须追踪更新链来找到提交的一个记录或直到
找不到提交的记录。
若记录被删除了且未更新(例如,标志=10),则应用类似的逻辑看删除的事务是否被提交了。若事务被提交了,则忽视记录,否则,应用上述逻辑,包括追踪所述链来找到提交的记录或直到找不到提交的记录。
图3示出了一实施例的读取MVCC数据库中记录的方法300的流程图。所述方法300从方框302开始,确定删除标志是否等于1。若删除标志等于1,则方法300跳转到方框304:确定删除TxID是否小于事务开始处的系统提交TxID,或确定是否是事务本身作出所述删除。若在方框304中删除TxID小于事务开始处的系统提交TxID,或事务本身作出所述删除,则方法300跳转到方框314:确定记录被删除,之后方法300结束。若在方框304中删除TxID不小于或等于事务开始处的系统提交TxID且并非事务本身作出所述删除,则方法300跳转到方框306:确定是否提交了具有删除TxID的事务,并确定所述删除TxID的结束时间戳(end timestamp,ETS)是否小于事务开始处当前日志序号(log record sequence number,LSN)(例如,myLSN)。若在方框306中提交了删除TxID且所述删除TxID的结束时间戳(end timestamp,ETS)小于myLSN,则方法300跳转到方框314:确定记录被删除,之后方法300结束。
若在方框302中删除标记不等于1或在方框306中没有提交删除TxID和/或删除TxID的结束时间戳(end time stamp,ETS)不小于事务开始处的当前日志序号(log recordsequence number,LSN),则方法300跳转到方框308:确定记录创建TxID是否小于所述事务开始处的当前提交TxID(myCommit_TxID),或确定是否是事务本身创建了所述记录。若在方框308中,所述创建TxID小于所述myCommit_TxID,或事务本身创建了所述记录,则方法300跳转到方框316:确定记录可见,之后方法300结束。若在方框308中所述创建TxID不小于所述myCommit_TxID且并非事务本身创建了所述记录,则方法300跳转到方框310:确定是否提交了所述创建TxID(create TxID,CTxID),并确定ETS(CTxID)是否小于事务开始处的当前日志序号(log record sequence number,LSN)(例如,myLSN)。若在方框310中提交了所述创建TxID(creat TxID,CTxID)且所述ETS(CTxID)小于事务开始处当前日志序号(logrecord sequence number,LSN)(例如,myLSN),则方法300跳转到方框316,确定记录可见,之后方法300结束。若在方框310中确定没有提交所述创建TxID(create TxID,CTxID)或所述ETS(CTxID)不小于事务开始处当前日志序号(log record sequence number,LSN)(例如,myLSN),则方法300跳转到方框312:确定更新标志是否等于1。若在方框312中,更新标志等于1,则方法300跳转到方框320:跟随VSRID以得到下一记录,之后方法300返回至方框308:对历史记录应用所述逻辑。若在方框312中,确定更新标志不等于1,则方法300跳转到方框318:确定记录不可见,之后方法300结束。
在一实施例中,为了为更长久地运行阅读器进行优化,可使用另一个值:最后事务的ID(Last_TxID),位于阅读器开始处,将所述ID保存在myLast_TxID中。任何大于myLast_TxID的事务ID不会在事务开始处提交。
在一实施例中,另一种优化是缩短事务ID和紧缩记录标头。事务ID基数(在实施例中为8个字节)可用于页,相关的事务ID(在实施例中为4个字节)用在记录标头中以降低空间使用率。当所述相关的事务ID溢出时,可选择一个新基数,使得更旧的事务ID都被提交,所有这些相关的较小的TxID都可设为0,来表示这些TxID全都是在所述页上的当前基数事务ID之前提交的,或者,在另一实施例中,简单地使用标志位来表示该事实并通过移除事务ID域来紧缩记录标头。当所述页中需要更多的空间时,可应要求完成紧缩。
本申请主旨与下面的参考文献相关。每个所述参考文献的全部内容均通过引用结合在本申请中:
【1】C·莫汉等人.ARIES支持精细粒度锁定和通过预写日志记录的部分回滚的事务恢复方法【J】.美国计算机学会数据库系统汇刊(Transactions on Database Systems,TODS),1992-03,17(1):94-162.
【2】C·莫汉.提交LSN:一种降低事务处理系统中锁定及封锁的新颖而简单的方法.第16届国际超大型数据库会议综述,406-418.
图4是可用于实现此处公开的设备和方法的处理系统400的方框图。特定的设备可利用所有所示的组件或组件的仅一子集,且设备之间的集成程度可能不同。此外,设备可包括组件的多个示例,如多个处理单元、处理器、存储器、发射器和接收器等。所述处理系统400可包括配备一个或多个输入/输出设备,如扬声器、麦克风、鼠标、触摸屏、按键、键盘、打印机和显示器等的处理单元401。所述处理单元401可包括中央处理器(centralprocessing unit,CPU)410、存储器420、海量存储设备430、网络接口450、I/O接口460和与总线440连接的天线电路470。所述处理单元401还包括与所述天线电路连接的天线振子475。
所述总线440可为任何类型的若干总线架构中的一个或多个,包括存储总线或存储控制器、外设总线、视频总线等。所述CPU 410可包括任何类型的电子数据处理器。所述存储器420可包括任何类型的系统存储器,如静态随机存取存储器(static random accessmemory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous dynamic random access memory,SDRAM)、只读存储器(read-only memory,ROM)或其组合等。在一实施例中,所述存储器420可包括启动时使用的ROM和执行程序时使用的用于存储程序和数据的DRAM。
所述海量存储设备430可包括任何类型的存储设备,用于存储数据、程序和其他信息,并使得所述数据、程序和其他信息可通过所述总线440访问。所述海量存储设备430可以包括,例如,固态硬盘、硬盘驱动器、磁盘驱动器或光盘驱动器等中的一个或多个。
所述I/O接口460可提供接口来将外部输入输出设备耦合至处理单元401。所述I/O接口460可包括视频适配器。例如,输入输出设备可包括耦合至所述视频适配器的显示器和耦合至所述I/O接口的鼠标/键盘/打印机。其他设备可耦合至所述处理单元401,并且可利用额外或更少的接口卡。例如,可使用如通用串行总线(Universal Serial Bus,USB)(未示出)等串行接口为打印机提供接口。
所述天线电路470和天线振子475可允许所述处理单元401通过网络与远端机通信。在一实施例中,所述天线电路470和天线振子475提供接入无线广域网(wireless widearea network,WAN)和/或接入蜂窝网络,如长期演进(Long Term Evolution,LTE)网络、码分多址接入(Code Division Multiple Access,CDMA)网络、宽带CDMA(Wideband CodeDivision Multiple Access,WCDMA)网络和全球移动通信系统(Global System forMobile Communications,GSM)网络。在某些实施例中,所述天线电路470和天线振子475还可向其他设备提供蓝牙和/或WiFi连接。
所述处理单元401还可包括一个或多个网络接口450,其中可包括以太网线等有线链路,和/或无线链路来接入节点或不同的网络。所述网络接口450允许所述处理单元401通过网络480与远端机通信。例如,所述网络接口450可通过一个或多个发射器/发射天线和一个或多个接收器/接收天线提供无线通信。在一实施例中,所述处理单元401耦合至局域网或广域网来进行数据处理和与例如其他处理单元、因特网或远端存储设施等远端机通信。
虽然已经详细描述了本说明,但是应理解,在不脱离附加的权利要求所定义的本发明的精神和范围的情况下可做出各种变化、替换和改变。此外,此处描述的特定的实施例并不意图限定本发明的范围,本领域技术人员能简单从本发明中获取的过程、机械、制造、事物的组成、方式、方法、步骤或现在所存在的或后期所要发展的可执行大体相同的功能或实现大体相同的结果,均作为此处描述的对应的实施例。相应地,所述附加的权利要求用于包括其范围内的,如过程、机械、制造、事物的组成、方式、方法或步骤。

Claims (27)

1.一种基于记录的多版本并发控制MVCC数据库DB管理系统中用于快照一致读取的方法,其特征在于,所述方法包括:
从阅读器起点的事务日志中复制系统提交事务标识TxID和当前日志记录序号LSN,而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;
根据记录TxID、所述提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。
2.根据权利要求1所述的方法,其特征在于,所述确定记录是否可见包括:当所述记录的创建TxID小于所述事务起点处的系统提交TxID或所述事务本身创建所述记录时,确定所述记录可见。
3.根据权利要求1所述的方法,其特征在于,所述确定记录是否可见包括:当所述记录的创建TxID被提交时且所述创建TxID的结束时间戳ETS小于所述事务起点处的当前LSN时,确定所述记录可见。
4.根据权利要求1所述的方法,还包括:当创建TxID大于或等于所述事务起点处的提交TxID,所述事务未创建所述记录且创建TxID未被提交或所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
5.根据权利要求1所述的方法,还包括:当创建TxID大于或等于所述事务起点处的提交TxID且满足两个条件中的一个时,确定所述记录不可见,其中,所述两个条件包括:确定未提交的创建TxID大于或等于所述事务起点处的当前LSN,以及确定创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN。
6.根据权利要求1所述的方法,其特征在于,还包括:当删除TxID小于所述事务起点处的提交TxID或所述事务本身作出删除时,判断所述记录是根据删除标志删除的。
7.根据权利要求1所述的方法,其特征在于,还包括:当删除TxID被提交且删除TxID的结束时间戳ETS小于所述事务起点处的当前LSN时,判断所述记录是根据删除标志删除的。
8.一种数据处理系统,用于管理数据库,其特征在于,所述数据处理系统包括:
处理器;
计算机可读存储介质,用于存储所述处理器的执行程序,其中,所述程序包括指令,以用于:
从阅读器起点的事务日志中复制系统提交事务标识TxID和当前日志记录序号LSN,而无需将事务的提交LSN回填到改变的记录,也无需阅读器复制整个事务表;
根据记录TxID、所述提交TxID和当前LSN确定记录是否可见,其中,只有当所述记录TxID等于或大于事务起点处的提交TxID时,才会查阅事务表。
9.根据权利要求8所述的数据处理系统,其特征在于,确定记录是否可见的所述指令包括:用于当所述记录的创建TxID小于所述事务起点处的系统提交TxID或所述事务本身创建所述记录时,确定所述记录可见的指令。
10.根据权利要求8所述的数据处理系统,其特征在于,所述确定记录是否可见的所述指令包括:用于当所述记录创建TxID被提交时且所述创建TxID的结束时间戳ETS小于所述事务起点处的当前LSN,确定所述记录可见的指令。
11.根据权利要求8所述的数据处理系统,其特征在于,所述程序还包括:用于进行以下操作的指令:当创建TxID大于或等于所述事务起点处的提交TxID且创建TxID未被提交时或当所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
12.根据权利要求8所述的数据处理系统,所述程序还包括:用于进行以下操作的指令:当创建TxID大于或等于所述事务起点处的提交TxID且满足两个条件中的一个时,确定所述记录不可见,其中,所述条件包括:确定未提交的创建TxID大于或等于所述事务起点处的当前LSN,以及确定创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN。
13.根据权利要求8所述的数据处理系统,其特征在于,所述程序还包括:用于进行以下操作的指令:当删除TxID小于所述事务起点处的提交TxID或所述事务本身删除所述记录时,判断所述记录是根据删除标志删除的。
14.根据权利要求8所述的数据处理系统,其特征在于,所述程序还包括:用于执行以下操作的指令:当删除TxID被提交且删除TxID的结束时间戳ETS小于所述事务起点处的当前LSN时,判断所述记录是根据删除标志删除的。
15.一种基于记录的多版本并发控制MVCC)数据库DB管理系统,其特征在于,所述系统包括:
事务表,包括所述系统中多个事务中的每个事务的状态,其中,每个事务均被事务标识TxID索引,这些TxID随着时间单一增加,提交TxID是所述事务表中活动事务的最旧的ID;
存储子系统,用于存储多个版本的记录和每个记录的更新历史,其中,每个记录都包括创建或删除所述记录的事务TxID;
日志记录子系统,包括处理器,其中,所述日志记录子系统用于追踪所述存储子系统的所有变化并用于使用日志记录序号LSN来进行序列比对和恢复;
阅读器,用于仅仅复制系统提交TxID和当前LSN,根据事务起点处的记录TxID、提交TxID和当前LSN,确定记录是否可见,而无需查阅所述事务表,除非所述记录TxID等于或大于所述事务起点处的提交TxID。
16.根据权利要求15所述的系统,其特征在于,所述阅读器用于:当所述记录的创建TxID小于所述事务起点处的系统提交TxID或所述事务本身创建所述记录时,确定所述记录可见。
17.根据权利要求15所述的系统,其特征在于,所述阅读器用于:当所述记录的创建TxID被提交且所述创建TxID的结束时间戳ETS小于所述事务起点处的当前LSN,确定所述记录可见。
18.根据权利要求16所述的系统,其特征在于,所述阅读器用于:当所述记录的创建TxID被提交且所述创建TxID的结束时间戳ETS小于所述事务起点处的当前LSN,确定所述记录可见。
19.根据权利要求15所述的系统,其特征在于,所述阅读器用于:当创建TxID大于或等于所述事务起点处的提交TxID且创建TxID未被提交时或当所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
20.根据权利要求16所述的系统,其特征在于,所述阅读器用于:当创建TxID大于或等于所述事务起点处的提交TxID且创建TxID未被提交时或当所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
21.根据权利要求17所述的系统,其特征在于,所述阅读器用于:当创建TxID大于或等于所述事务起点处的提交TxID且创建TxID未被提交时或当所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
22.根据权利要求18所述的系统,其特征在于,所述阅读器用于:当创建TxID大于或等于所述事务起点处的提交TxID且创建TxID未被提交时或当所述创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN时,跟随版本存储记录ID VSRID从而根据更新标志得到下一记录。
23.根据权利要求15所述的系统,所述阅读器用于:当创建TxID大于或等于所述事务起点处的提交TxID且满足两个条件中的一个时,确定所述记录不可见,其中,所述两个条件包括:确定未提交的创建TxID大于或等于所述事务起点处的当前LSN,以及确定创建TxID的结束时间戳ETS大于或等于所述事务起点处的当前LSN。
24.根据上述权利要求中的任意一项所述的系统,其特征在于,所述阅读器用于:当删除TxID小于所述事务起点处的提交TxID或所述事务本身删除所述记录时,判断所述记录是根据删除标志删除的。
25.根据权利要求15至23中的任意一项所述的系统,其特征在于,所述阅读器用于:当删除TxID被提交且删除TxID的结束时间戳ETS小于所述事务起点处的当前LSN时,判断所述记录是根据删除标志删除的。
26.根据权利要求24所述的系统,其特征在于,所述阅读器用于:当删除TxID被提交且删除TxID的结束时间戳ETS小于所述事务起点处的当前LSN时,判断所述记录是根据删除标志删除的。
27.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于指令相关硬件,来完成权利要求1至7任意一项所述的方法。
CN201580014605.9A 2014-03-28 2015-03-16 基于记录的多版本并发控制的一致性读取的方法和系统 Active CN106462586B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/229,638 2014-03-28
US14/229,519 US9430274B2 (en) 2014-03-28 2014-03-28 Efficient methods and systems for consistent read in record-based multi-version concurrency control
US14/229,519 2014-03-28
US14/229,638 US9645844B2 (en) 2014-03-28 2014-03-28 Systems and methods to optimize multi-version support in indexes
PCT/CN2015/074299 WO2015144004A2 (en) 2014-03-28 2015-03-16 Efficient methods and systems for consistent read in record-based multi-version concurrency control

Publications (2)

Publication Number Publication Date
CN106462586A CN106462586A (zh) 2017-02-22
CN106462586B true CN106462586B (zh) 2019-11-26

Family

ID=54190668

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580014605.9A Active CN106462586B (zh) 2014-03-28 2015-03-16 基于记录的多版本并发控制的一致性读取的方法和系统
CN201580017324.9A Active CN106462592B (zh) 2014-03-28 2015-03-16 优化对索引的多版本支持的系统和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580017324.9A Active CN106462592B (zh) 2014-03-28 2015-03-16 优化对索引的多版本支持的系统和方法

Country Status (5)

Country Link
US (3) US9645844B2 (zh)
EP (3) EP3117348B1 (zh)
CN (2) CN106462586B (zh)
BR (1) BR112016022388B1 (zh)
WO (2) WO2015144003A1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042870B2 (en) * 2014-10-08 2018-08-07 International Business Machines Corporation Supporting transient snapshot with coordinated/uncoordinated commit protocol
US20160125022A1 (en) * 2014-10-31 2016-05-05 Microsoft Corporation Efficient maintenance of column store indexes on memory-optimized tables
US10013440B1 (en) * 2014-10-31 2018-07-03 Amazon Technologies, Inc. Incremental out-of-place updates for index structures
US10042552B2 (en) 2014-11-25 2018-08-07 Sap Se N-bit compressed versioned column data array for in-memory columnar stores
US10725987B2 (en) 2014-11-25 2020-07-28 Sap Se Forced ordering of a dictionary storing row identifier values
US10552402B2 (en) * 2014-11-25 2020-02-04 Amarnadh Sai Eluri Database lockless index for accessing multi-version concurrency control data
US9965504B2 (en) 2014-11-25 2018-05-08 Sap Se Transient and persistent representation of a unified table metadata graph
US10296611B2 (en) 2014-11-25 2019-05-21 David Wein Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes
US10474648B2 (en) 2014-11-25 2019-11-12 Sap Se Migration of unified table metadata graph nodes
US10409864B2 (en) * 2014-11-25 2019-09-10 Sap Se Transaction control block for multiversion concurrency commit status
US10255309B2 (en) 2014-11-25 2019-04-09 Sap Se Versioned insert only hash table for in-memory columnar stores
US10558495B2 (en) 2014-11-25 2020-02-11 Sap Se Variable sized database dictionary block encoding
US9430396B2 (en) * 2014-12-22 2016-08-30 Intel Corporation Updating persistent data in persistent memory-based storage
US9442837B2 (en) * 2015-02-17 2016-09-13 International Business Machines Corporation Accelerating multiversion concurrency control using hardware transactional memory
US10795875B2 (en) * 2015-08-12 2020-10-06 Industry-University Cooperation Foundation Hanyang University Data storing method using multi-version based data structure
US10896096B2 (en) 2016-04-21 2021-01-19 International Business Machines Corporation Temporal logical transactions
US10303788B2 (en) * 2016-08-31 2019-05-28 Oracle International Corporation Efficient determination of committed changes
US10248685B2 (en) * 2016-08-31 2019-04-02 Oracle International Corporation Efficient determination of committed changes
CN106371770B (zh) * 2016-09-05 2019-07-12 杭州华为数字技术有限公司 数据写入方法及装置
US10346386B2 (en) * 2016-11-04 2019-07-09 Salesforce.Com, Inc. Multiversion concurrency control of database records with uncommitted transactions
US10318521B2 (en) * 2016-11-29 2019-06-11 International Business Machines Corporation Query processing with bounded staleness for transactional mutations in NoSQL database
US10831775B2 (en) * 2017-01-06 2020-11-10 International Business Machines Corporation Efficient representation, access and modification of variable length objects
US10915413B2 (en) * 2017-01-19 2021-02-09 Sap Se Database redo log optimization by skipping MVCC redo log records
US10691696B2 (en) 2017-01-31 2020-06-23 Salesforce.Com, Inc. Key-value storage using a skip list
US11386065B2 (en) * 2017-01-31 2022-07-12 Salesforce.Com, Inc. Database concurrency control through hash-bucket latching
US10609174B2 (en) 2017-04-11 2020-03-31 Microsoft Technology Licensing, Llc Parallel prefetching log/meta stream sub-portions to recreate partition states in a distributed computing system
RU2647648C1 (ru) * 2017-04-13 2018-03-16 Общество с ограниченной ответственностью "Научно-технический центр РЕЛЭКС" (ООО "НТЦ РЕЛЭКС") Способ организации хранения исторических дельт записей
US10795877B2 (en) * 2017-12-04 2020-10-06 Sap Se Multi-version concurrency control (MVCC) in non-volatile memory
CN110019134A (zh) * 2017-12-27 2019-07-16 阿里巴巴集团控股有限公司 数据库的多版本控制方法及设备
CN110196788B (zh) * 2018-03-30 2022-05-20 腾讯科技(深圳)有限公司 一种数据读取方法、装置、系统及存储介质
CN108805569A (zh) * 2018-05-29 2018-11-13 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备
CN108920708B (zh) * 2018-07-20 2021-04-27 新华三技术有限公司 一种数据处理方法及装置
US11086818B2 (en) * 2018-09-13 2021-08-10 International Business Machines Corporation Establishing object atomicity in snapshot based disaster recovery environments
US10877825B2 (en) * 2018-10-04 2020-12-29 Oracle International Corporation System for offline object based storage and mocking of rest responses
CN109726024A (zh) * 2018-12-28 2019-05-07 北京爱奇艺科技有限公司 一种消息延时投递方法、装置及设备
CN109710388B (zh) * 2019-01-09 2022-10-21 腾讯科技(深圳)有限公司 数据读取方法、装置、电子设备以及存储介质
US11397749B2 (en) * 2019-05-14 2022-07-26 International Business Machines Corporation Asynchronous replication of in-scope table data
CN114761940A (zh) * 2019-08-28 2022-07-15 斯巴达系统公司 用于生成电子数据记录的审计跟踪的方法、设备和计算机可读介质
US11194702B2 (en) * 2020-01-27 2021-12-07 Red Hat, Inc. History based build cache for program builds
US20210342317A1 (en) 2020-04-29 2021-11-04 Oracle International Corporation Techniques for efficient migration of key-value data
US11455290B1 (en) * 2020-06-29 2022-09-27 Amazon Technologies, Inc. Streaming database change data from distributed storage
CN112307118B (zh) * 2020-09-30 2024-03-22 武汉达梦数据库股份有限公司 基于日志解析同步的保障数据一致性的方法和同步系统
US20230394028A1 (en) * 2022-06-02 2023-12-07 Microsoft Technology Licensing, Llc Method and system for lock after qualification for update queries
CN117131042A (zh) * 2023-08-01 2023-11-28 上海沄熹科技有限公司 一种数据库函数索引实现方法及装置
CN117573564B (zh) * 2024-01-15 2024-03-26 智业软件股份有限公司 一种基于gitlab代码提交日志自动识别差异的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102419764A (zh) * 2010-10-20 2012-04-18 微软公司 带有多版本化的数据库系统的分布式事务管理
CN102436490A (zh) * 2010-10-28 2012-05-02 微软公司 多功能存储器内数据库恢复

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009425A (en) 1996-08-21 1999-12-28 International Business Machines Corporation System and method for performing record deletions using index scans
US7305386B2 (en) 2002-09-13 2007-12-04 Netezza Corporation Controlling visibility in multi-version database systems
US7383276B2 (en) 2004-01-30 2008-06-03 Microsoft Corporation Concurrency control for B-trees with node deletion
US20070118547A1 (en) 2005-11-22 2007-05-24 Monish Gupta Efficient index versioning in multi-version databases
US9009182B2 (en) 2010-10-05 2015-04-14 Sap Se Distributed transaction management with tokens
US8818963B2 (en) 2010-10-29 2014-08-26 Microsoft Corporation Halloween protection in a multi-version database system
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8407195B2 (en) 2011-03-07 2013-03-26 Microsoft Corporation Efficient multi-version locking for main memory databases
CN102103642B (zh) 2011-03-25 2016-08-03 北京世纪互联宽带数据中心有限公司 基于oltp的数据删除方法、系统及图形数据库服务器
US9396227B2 (en) 2012-03-29 2016-07-19 Hewlett Packard Enterprise Development Lp Controlled lock violation for data transactions
CN102750376A (zh) 2012-06-25 2012-10-24 天津神舟通用数据技术有限公司 一种多版本数据库存储引擎系统及其相关处理的实现方法
US9171027B2 (en) * 2013-05-29 2015-10-27 International Business Machines Corporation Managing a multi-version database

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102419764A (zh) * 2010-10-20 2012-04-18 微软公司 带有多版本化的数据库系统的分布式事务管理
CN102436490A (zh) * 2010-10-28 2012-05-02 微软公司 多功能存储器内数据库恢复

Also Published As

Publication number Publication date
EP3876105A1 (en) 2021-09-08
WO2015144004A2 (en) 2015-10-01
EP3117348A1 (en) 2017-01-18
EP3111347A2 (en) 2017-01-04
BR112016022388B1 (pt) 2022-09-27
EP3117348A4 (en) 2017-03-01
WO2015144004A3 (en) 2015-11-26
BR112016022388A8 (pt) 2022-07-19
CN106462586A (zh) 2017-02-22
CN106462592B (zh) 2020-03-10
EP3111347B1 (en) 2021-05-05
US10706036B2 (en) 2020-07-07
US20170206234A1 (en) 2017-07-20
US9645844B2 (en) 2017-05-09
EP3117348B1 (en) 2020-06-03
US20150278281A1 (en) 2015-10-01
BR112016022388A2 (zh) 2018-06-19
EP3111347A4 (en) 2017-03-01
US9430274B2 (en) 2016-08-30
US20150278270A1 (en) 2015-10-01
CN106462592A (zh) 2017-02-22
WO2015144003A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
CN106462586B (zh) 基于记录的多版本并发控制的一致性读取的方法和系统
US11429641B2 (en) Copying data changes to a target database
US9953051B2 (en) Multi-version concurrency control method in database and database system
EP3234780B1 (en) Detecting lost writes
US8352425B2 (en) Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US8990177B2 (en) Lock-free transactional support for large-scale storage systems
US8560500B2 (en) Method and system for removing rows from directory tables
US9672244B2 (en) Efficient undo-processing during data redistribution
US20120221528A1 (en) Logging scheme for column-oriented in-memory databases
CN109992628B (zh) 数据同步的方法、装置、服务器及计算机可读存储介质
US11275760B2 (en) Online schema and data transformations
KR101429046B1 (ko) 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법
US10685014B1 (en) Method of sharing read-only data pages among transactions in a database management system
CN115221145A (zh) 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统
CN112631741A (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
GR01 Patent grant
GR01 Patent grant