CN114416201A - 一种基于分布式数据库的快照隔离实现方法 - Google Patents
一种基于分布式数据库的快照隔离实现方法 Download PDFInfo
- Publication number
- CN114416201A CN114416201A CN202210030069.3A CN202210030069A CN114416201A CN 114416201 A CN114416201 A CN 114416201A CN 202210030069 A CN202210030069 A CN 202210030069A CN 114416201 A CN114416201 A CN 114416201A
- Authority
- CN
- China
- Prior art keywords
- transaction
- exclusive lock
- read
- readts
- write
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000002955 isolation Methods 0.000 title claims abstract description 16
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Abstract
本发明公开一种基于分布式数据库的快照隔离实现方法,涉及分布式数据库技术领域,包括:在事务启动时,赋予事务一个读时间戳readTS和一个写时间戳writeTS;当数据项Q发生读操作时,判断目标key上是否存在排他锁,判断排他锁是否小于等于当前事务的readTS,若两者都是,则首先执行push操作,解锁,随后读取目标key上的value,完成本次读操作;当数据项Q发生写操作时,检查数据项Q上是否存在排他锁,若存在,则执行push abort操作,尝试abort对方事务,abort失败则进入队列等待,直到事务提交被唤醒,abort成功则解锁,随后执行写操作并产生排他锁,若不存在,则直接执行写操作并产生排他锁。本发明可以让分布式数据库在没有写偏序的场景中获得更高的吞吐量和更低的事务延迟。
Description
技术领域
本发明涉及分布式数据库技术领域,具体的说是一种基于分布式数据库的快照隔离实现方法。
背景技术
Percolator事务模型:Percolator事务模型是对谷歌的一款数据库Percolator的事务实现的抽象。它通过把事务产生的锁和数据一起保存到存储引擎,解决了分布式环境中锁的高可用、持久化、自平衡等问题;同时,在一个事务产生的所有锁中选择一个作为primary lock,它是这个事务在整个集群的同步点,唯一性地指示事务的状态,其余的lock在逻辑上都是指向primary lock的指针。当其它事务与当前事务发生冲突时,需要通过lock指针来检查同步点(primary lock)的状态决定冲突处理方式。
MVCC:多版本并发控制,每个数据项Q维护多个版本Q1、Q2...Qn,一个事务txni根据它的时间戳i读取j<=i的最大的数据项Qj。txni的写操作根据并发控制协议的不同会采取不同的处理措施。
时间戳排序并发控制协议:每个数据项Q维护两个时间戳,r-ts保存成功读取过Q的所有事务的最大时间戳,w-ts保存成功执行write(Q)的事务的最大时间戳。时间戳排序协议的运作方式如下:
(1)假设事务Ti发出read(Q)操作
a:若ts(Ti)<w-ts(Q),则Ti需要读入的Q值已经被覆盖。因此read操作被拒绝,事务Ti会滚。
b:若ts(Ti)>=w-ts(Q),则执行read操作,r-ts(Q)被设置为max(r-ts(Q),ts(Ti))。
(2)假设事务Ti发出write(Q)操作
a:若ts(Ti)<r-ts(Q),则Ti产生的Q值是先前执行的事务需要的值,且系统已经假定该值不会再产生,因此write操作被拒绝,事务Ti回滚。
b:若ts(Ti)<w-ts(Q),则Ti试图写入的Q值已经过时,因此write操作被拒绝,事务Ti回滚。
c:其它情况,系统执行写入操作,将w-ts(Q)设置为ts(Ti)。
基于Percolar事务模型、以MVCC+时间戳排序实现的分布式数据库,虽然能够实现Serializability的隔离级别,并且集群能有良好的扩展性,但是由于时间戳排序是一个较为乐观的并发控制协议,所以在高并发场景下会发生大量的回滚,导致事务的并发度降低,事务延迟增高。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于分布式数据库的快照隔离实现方法。
本发明的一种基于分布式数据库的快照隔离实现方法,解决上述技术问题采用的技术方案如下:
一种基于分布式数据库的快照隔离实现方法,该方法通过调整事务的时间戳达到解决冲突的目的,具体流程包括:
步骤S1、在事务启动时,赋予事务一个读时间戳readTS和一个写时间戳writeTS;
步骤S2、当一个针对数据项Q的读操作发生时,判断目标key上是否存在排他锁,
2a)若存在排他锁,则继续判断排他锁是否小于等于当前事务的读时间戳readTS,2a.1)若是,那么执行push操作,检查排他锁是否处于finalized状态,
若是,则解除排他锁,读取目标key上的value,完成本次读操作,
若否,则将排他锁所属事务的writeTS移动到当前事务的读时间戳readTS的后面,即readTS.next,读取目标key上的value,完成本次读操作,
2a.2)若否,则直接读取目标key上的value,完成本次读操作,
2b)若不存在排他锁,则直接读取目标key上的value,完成本次读操作;
步骤S3、当一个针对数据项Q的写操作发生时,检查在要操作的数据项Q上是否存在排他锁,
3a)如果存在排他锁,则执行push abort操作,尝试abort对方事务,
在abort对方事务失败后进入队列等待,直到事务提交被唤醒,
在abort对方事务成功后解除当前排他锁,随后执行写操作并产生排他锁;
3b)如果不存在排他锁,则直接执行写操作并产生排他锁。
具体的,赋予事务一个读时间戳readTS和一个写时间戳writeTS之后,事务的所有读操作都在读时间戳readTS的一致性快照上进行,事务的所有写操作都在写时间戳writeTS上发生。
可选的,数据项Q包含多个数据版本。
进一步可选的,在数据项Q的多个数据版本中,选择小于等于当前事务的读时间戳readTS的最大数据版本进行读操作。
可选的,执行步骤S2,完成读操作后,更新数据项Q的读时间戳为max(r-ts(Q),readTS)。
可选的,执行步骤S3的过程中,执行写操作并产生排他锁之前,需要检查数据项Q的最大读时间戳r-ts,如果r-ts>=writeTS,那么当前事务需要将writeTS移动到r-ts的后面,即r-ts.next,再执行写操作并产生排他锁。
进一步可选的,执行步骤S3的过程中,执行写操作并产生排他锁之前,需要检查数据项Q的最大读时间戳r-ts,如果r-ts<writeTS,那么直接执行写操作并产生排他锁。
优选的,执行写操作后产生的排他锁在事务提交后解锁。
本发明的一种基于分布式数据库的快照隔离实现方法,与现有技术相比具有的有益效果是:
(1)本发明可以让分布式数据库在没有写偏序的场景中获得更高的吞吐量和更低的事务延迟;
(2)本发明通过在时间戳排序的架构上实现快照隔离,并在这种隔离级别下,实现事务的无阻塞读,在无偏序的场景下,可以使数据库的事务延迟显著降低,数据库的吞吐量有明显的提高,同时使分布式数据库系统的SSI隔离级别的逻辑不受影响。
附图说明
附图1是本发明的数据项Q执行读操作的流程图;
附图2是本发明的数据项Q执行写操作的流程图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
结合附图1、2,本实施例提出一种基于分布式数据库的快照隔离实现方法,该方法通过调整事务的时间戳达到解决冲突的目的,具体流程包括:
步骤S1、在事务启动时,赋予事务一个读时间戳readTS和一个写时间戳writeTS。
事务的所有读操作都在读时间戳readTS的一致性快照上进行,事务的所有写操作都在写时间戳writeTS上发生。
步骤S2、数据项Q包含多个数据版本,选择小于等于当前事务的读时间戳readTS的最大数据版本进行读操作;
当一个针对数据项Q的读操作发生时,判断目标key上是否存在排他锁,
2a)若存在排他锁,则继续判断排他锁是否小于等于当前事务的读时间戳readTS,2a.1)若是,那么执行push操作,检查排他锁是否处于finalized状态,
若是,则解除排他锁,读取目标key上的value,完成本次读操作,
若否,则将排他锁所属事务的writeTS移动到当前事务的读时间戳readTS的后面,即readTS.next,读取目标key上的value,完成本次读操作,
2a.2)若否,则直接读取目标key上的value,完成本次读操作,
2b)若不存在排他锁,则直接读取目标key上的value,完成本次读操作。
完成读操作后,更新数据项Q的读时间戳为max(r-ts(Q),readTS)。
步骤S3、当一个针对数据项Q的写操作发生时,检查在要操作的数据项Q上是否存在排他锁,
3a)如果存在排他锁,则执行push abort操作,尝试abort对方事务,
在abort对方事务失败后进入队列等待,直到事务提交被唤醒,
在abort对方事务成功后解除当前排他锁,随后执行写操作并产生排他锁;
3b)如果不存在排他锁,则直接执行写操作并产生排他锁。
执行步骤S3的过程中,执行写操作并产生排他锁之前,需要检查数据项Q的最大读时间戳r-ts,
如果r-ts>=writeTS,那么当前事务需要将writeTS移动到r-ts的后面,即r-ts.next,再执行写操作并产生排他锁,
如果r-ts<writeTS,那么直接执行写操作并产生排他锁。
需要注意的是:执行写操作后产生的排他锁在事务提交后解锁。
综上可知,采用本发明的一种基于分布式数据库的快照隔离实现方法,可以让分布式数据库在没有写偏序的场景中获得更高的吞吐量和更低的事务延迟。
基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
Claims (8)
1.一种基于分布式数据库的快照隔离实现方法,其特征在于,该方法通过调整事务的时间戳达到解决冲突的目的,具体流程包括:
步骤S1、在事务启动时,赋予事务一个读时间戳readTS和一个写时间戳writeTS;
步骤S2、当一个针对数据项Q的读操作发生时,判断目标key上是否存在排他锁,
2a)若存在排他锁,则继续判断排他锁是否小于等于当前事务的读时间戳readTS,
2a.1)若是,那么执行push操作,检查排他锁是否处于finalized状态,
若是,则解除排他锁,读取目标key上的value,完成本次读操作,
若否,则将排他锁所属事务的writeTS移动到当前事务的读时间戳readTS的后面,即readTS.next,读取目标key上的value,完成本次读操作,
2a.2)若否,则直接读取目标key上的value,完成本次读操作,
2b)若不存在排他锁,则直接读取目标key上的value,完成本次读操作;
步骤S3、当一个针对数据项Q的写操作发生时,检查在要操作的数据项Q上是否存在排他锁,
3a)如果存在排他锁,则执行push abort操作,尝试abort对方事务,
在abort对方事务失败后进入队列等待,直到事务提交被唤醒,
在abort对方事务成功后解除当前排他锁,随后执行写操作并产生排他锁;
3b)如果不存在排他锁,则直接执行写操作并产生排他锁。
2.根据权利要求1所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,赋予事务一个读时间戳readTS和一个写时间戳writeTS之后,事务的所有读操作都在读时间戳readTS的一致性快照上进行,事务的所有写操作都在写时间戳writeTS上发生。
3.根据权利要求2所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,数据项Q包含多个数据版本。
4.根据权利要求3所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,在数据项Q的多个数据版本中,选择小于等于当前事务的读时间戳readTS的最大数据版本进行读操作。
5.根据权利要求2所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,执行步骤S2,完成读操作后,更新数据项Q的读时间戳为max(r-ts(Q),readTS)。
6.根据权利要求2所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,执行步骤S3的过程中,执行写操作并产生排他锁之前,需要检查数据项Q的最大读时间戳r-ts,如果r-ts>=writeTS,那么当前事务需要将writeTS移动到r-ts的后面,即r-ts.next,再执行写操作并产生排他锁。
7.根据权利要求6所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,执行步骤S3的过程中,执行写操作并产生排他锁之前,需要检查数据项Q的最大读时间戳r-ts,如果r-ts<writeTS,那么直接执行写操作并产生排他锁。
8.根据权利要求7所述的一种基于分布式数据库的快照隔离实现方法,其特征在于,执行写操作后产生的排他锁在事务提交后解锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210030069.3A CN114416201B (zh) | 2022-01-12 | 2022-01-12 | 一种基于分布式数据库的快照隔离实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210030069.3A CN114416201B (zh) | 2022-01-12 | 2022-01-12 | 一种基于分布式数据库的快照隔离实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114416201A true CN114416201A (zh) | 2022-04-29 |
CN114416201B CN114416201B (zh) | 2024-04-02 |
Family
ID=81274279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210030069.3A Active CN114416201B (zh) | 2022-01-12 | 2022-01-12 | 一种基于分布式数据库的快照隔离实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416201B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302143A1 (en) * | 2010-06-02 | 2011-12-08 | Microsoft Corporation | Multi-version concurrency with ordered timestamps |
CN104317944A (zh) * | 2014-10-31 | 2015-01-28 | 上海实方软件有限公司 | 一种基于公式的时间戳动态调整并发控制方法 |
US20170220617A1 (en) * | 2016-02-01 | 2017-08-03 | Yahoo! Inc. | Scalable conflict detection in transaction management |
CN110196760A (zh) * | 2018-07-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式事务一致性实现方法及装置 |
CN113722052A (zh) * | 2021-08-23 | 2021-11-30 | 华中科技大学 | 一种基于数据双版本的非易失内存更新方法 |
-
2022
- 2022-01-12 CN CN202210030069.3A patent/CN114416201B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110302143A1 (en) * | 2010-06-02 | 2011-12-08 | Microsoft Corporation | Multi-version concurrency with ordered timestamps |
CN104317944A (zh) * | 2014-10-31 | 2015-01-28 | 上海实方软件有限公司 | 一种基于公式的时间戳动态调整并发控制方法 |
US20170220617A1 (en) * | 2016-02-01 | 2017-08-03 | Yahoo! Inc. | Scalable conflict detection in transaction management |
CN110196760A (zh) * | 2018-07-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式事务一致性实现方法及装置 |
CN113722052A (zh) * | 2021-08-23 | 2021-11-30 | 华中科技大学 | 一种基于数据双版本的非易失内存更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114416201B (zh) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3117348B1 (en) | Systems and methods to optimize multi-version support in indexes | |
CN110196760B (zh) | 分布式事务一致性实现方法及装置 | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN109923534B (zh) | 对具有未提交事务的数据库记录的多版本并发控制 | |
EP3120261B1 (en) | Dependency-aware transaction batching for data replication | |
US9396227B2 (en) | Controlled lock violation for data transactions | |
US6662196B2 (en) | Collision avoidance in bidirectional database replication | |
US9747356B2 (en) | Eager replication of uncommitted transactions | |
US9805088B2 (en) | Constraint-based consistency with snapshot isolation | |
CN111190935B (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
US10402285B2 (en) | Hybrid database concurrent transaction control | |
US20100257138A1 (en) | Data change ordering in multi-log based replication | |
WO2011009274A1 (zh) | 并发控制方法及装置 | |
EP4006740A1 (en) | Method for indexing data in storage engines, and related device | |
US20150074070A1 (en) | System and method for reconciling transactional and non-transactional operations in key-value stores | |
CN113391885A (zh) | 一种分布式事务处理系统 | |
CN111459920B (zh) | 基于虚拟全局时钟同步的多版本并发控制方法及系统 | |
US20230081900A1 (en) | Methods and systems for transactional schema changes | |
CN109947742B (zh) | 面向二阶段锁的多版本数据库并发控制方法和系统 | |
CN105786595A (zh) | 一种两段式提交的事务控制方法 | |
CN113168371A (zh) | 多主共享存储数据库的写-写冲突检测 | |
CN111209093B (zh) | 一种分布式数据库系统中分布式事务的处理方法 | |
CN107533474B (zh) | 一种事务处理方法及装置 | |
CN110955672B (zh) | 面向乐观并发控制的多版本支持方法及系统 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221130 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Address before: Building S02, 1036 Gaoxin Langchao Road, Jinan, Shandong 250100 Applicant before: Shandong Inspur Scientific Research Institute Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |