CN110865874B - 事务提交的方法和装置 - Google Patents

事务提交的方法和装置 Download PDF

Info

Publication number
CN110865874B
CN110865874B CN201911086637.6A CN201911086637A CN110865874B CN 110865874 B CN110865874 B CN 110865874B CN 201911086637 A CN201911086637 A CN 201911086637A CN 110865874 B CN110865874 B CN 110865874B
Authority
CN
China
Prior art keywords
transaction
stage
transactions
data
execution
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
CN201911086637.6A
Other languages
English (en)
Other versions
CN110865874A (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.)
Guangzhou Huaduo Network Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology 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 Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201911086637.6A priority Critical patent/CN110865874B/zh
Publication of CN110865874A publication Critical patent/CN110865874A/zh
Application granted granted Critical
Publication of CN110865874B publication Critical patent/CN110865874B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请公开了一种事务提交的方法,属于数据处理技术领域。该方法包括:接收第N+1阶段的对数据库进行操作的多个事务;对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,所述执行事务集中的各事务之间不存在冲突;基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作;将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;基于拷贝后的稳定版本数据集中的数据,进行写磁盘。采用本申请,可以有效解决相关技术中事务提交的延迟较大的技术问题。

Description

事务提交的方法和装置
技术领域
本申请涉及数据处理技术领域,具体涉及一种事务提交的方法和装置。
背景技术
数据库事务是访问并可能操作数据的一个数据操作序列,该数据操作序列中的操作要么全部执行,要么全部不执行,是一个不可分割的工作单位(称为事务的原子性)。数据库事务可以简称为事务,事务由事务开始与事务结束之间的全部数据操作组成。
相关技术中,为了保证事务的原子性,事务在提交时,需要先写日志至一个集中缓冲区,然后才可以写磁盘。写磁盘成功则说明事务提交成功,写磁盘失败则说明事务提交失败。当事务提交失败时,可能事务中的某些数据操作已经执行成功,而某些数据操作执行失败,此时可以通过之前写的日志,将数据回滚到一致性状态,从而,可以重新提交该事务,保证了事务的原子性。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
相关技术的日志均写至一个集中缓冲区,在这一过程中,为了避免不同的事务的日志互相影响,需要进行加锁,即某一事务将缓冲区加锁之后,只有该事务的日志可以写入,其余事务的日志暂时不能写入,这给事务提交造成较大的延迟。
发明内容
本申请实施例提供了一种事务提交的方法和装置,可以解决相关技术中存在的技术问题。所述事务提交的方法和装置的技术方案如下:
第一方面,提供了一种事务提交的方法,所述方法包括:
接收第N+1阶段的对数据库进行操作的多个事务,其中,所述数据库包括修改版本数据集和稳定版本数据集,所述N为大于或等于1的整数;
对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,所述执行事务集中的各事务之间不存在冲突;
基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作;
将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
在一种可能的实现方式中,所述对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,包括:
将所述第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务;
将所述多个事务和所述第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与所述第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果所述事务与所述第N+1阶段的执行事务集中的事务不存在冲突,则将所述事务添加到所述第N+1阶段的执行事务集中;
将未添加到所述第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
在一种可能的实现方式中,所述接收第N+1阶段的对数据库进行操作的多个事务之后,还包括:
对于第N+1阶段接收到的每个事务,将所述事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将所述事务添加到所述第N阶段的执行事务集中。
在一种可能的实现方式中,所述基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作,包括:
对于所述第N+1阶段的执行事务集中的各事物,如果基于所述事务,对所述修改版本数据集中的目标数据进行的操作失败,则基于所述目标数据在稳定版本数据集中的对应数据,将所述目标数据回滚到一致性状态,并重新基于所述事务,对所述修改版本数据集中的目标数据进行操作。
在一种可能的实现方式中,所述基于更新后的稳定版本数据集中的数据,进行写磁盘,包括:
将所述更新后的稳定版本数据集中有修改的数据,写入到磁盘中。
第二方面,提供了一种事务提交的装置,所述装置包括:
接收模块,用于接收第N+1阶段的对数据库进行操作的多个事务,其中,所述数据库包括修改版本数据集和稳定版本数据集,所述N为大于或等于1的整数;
验证模块,用于对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,所述执行事务集中的各事务之间不存在冲突;
操作模块,用于基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作;
拷贝模块,用于将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
写入模块,用于基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
在一种可能的实现方式中,所述验证模块,用于:
将所述第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务;
将所述多个事务和所述第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与所述第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果所述事务与所述第N+1阶段的执行事务集中的事务不存在冲突,则将所述事务添加到所述第N+1阶段的执行事务集中;
将未添加到所述第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
在一种可能的实现方式中,所述装置还包括添加模块,用于:
对于第N+1阶段接收到的每个事务,将所述事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将所述事务添加到所述第N阶段的执行事务集中。
在一种可能的实现方式中,所述操作模块,用于:
对于所述第N+1阶段的执行事务集中的各事物,如果基于所述事务,对所述修改版本数据集中的目标数据进行的操作失败,则基于所述目标数据在稳定版本数据集中的对应数据,将所述目标数据回滚到一致性状态,并重新基于所述事务,对所述修改版本数据集中的目标数据进行操作。
在一种可能的实现方式中,所述拷贝模块,用于:
将所述拷贝后的稳定版本数据集中有修改的数据,写入到磁盘中。
第三方面,提供了一种服务器,所述服务器包括存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如第一方面所述的事务提交的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如第一方面所述的事务提交的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的事务提交的方法,通过在数据库中维持两个版本的数据集,即修改版本数据集和稳定版本数据集。在基于事务对数据进行操作时,只对修改版本数据集中的数据进行操作,而不对稳定版本数据集中的数据进行改变。这样,当对修改版本数据集中的数据操作失败时,可以基于稳定版本数据集中的数据,将修改版本数据集中的数据回滚到一致性状态,从而,可以重新执行事务操作,不需要预先写日志,不需要加锁,在一定程度上缩短了事务提交的延迟。另外,在进行事务提交时,通过生成执行事务集,从而对事务进行批量提交,这也可以缩短事务提交的延迟。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种事务提交的方法的流程图;
图2是本申请实施例提供的一种事务提交的装置的结构示意图;
图3是本申请实施例提供的一种服务器的结构示意图;
图4是本申请实施例提供的一种对事务进行冲突验证的过程示意图;
图5是本申请实施例提供的一种事务提交的方法的实施环境图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种事务提交的方法,该方法可以由服务器实现。其中,该服务器可以是单个服务器,也可以是服务器集群。
本申请实施例提供了一种事务提交的方法,该方法具体的可以应用于数据库***中。图5为本申请实施例提供的事务提交的方法的实施环境图,在该实施环境中包括多个终端和服务器集群,服务器集群中维护有两个版本的数据集,分别为修改版本数据集和稳定版本数据集。当用户想要对数据库中的数据进行操作时,用户在终端上进行操作,触发终端向服务器发送对数据库进行操作的事务。则在一段时长内,可能会有多个事务发送给服务器,该多个事务可以来自同一终端,也可以来自不同的终端。然后,服务器即可以接收第N+1阶段对数据库进行操作的多个事务,对接收到的多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集。基于第N+1阶段的执行事务集中的各事务,对修改版本数据集中的数据进行操作(如图5所示)。操作完成后,将修改版本数据集中有修改的数据,拷贝到稳定版本数据集中(如图5所示)。最后,基于拷贝后的稳定版本数据集中的数据,进行写磁盘。在事务提交完成之后,还可以向终端返回相应的数据。例如,当事务中包括读操作时,服务器完成事务中的读操作之后,向终端返回终端请求读取的数据。
如图1所示,事务提交的方法的处理流程可以包括如下步骤:
在步骤101中,接收第N+1阶段的对数据库进行操作的多个事务。
其中,数据库包括修改版本数据集和稳定版本数据集,N为大于或等于1的整数。修改版本数据集和稳定版本数据集在进行操作前包含的数据相同。
事务也可以称为数据库事务,其包括数据操作序列,具体的可以包括读操作集和写操作集。
第N+1阶段为一个时间概念,各阶段的时长可以相等,例如,可以均为10ms,各阶段按照时间顺序排序,例如第一阶段为1-10ms,第二阶段为10ms-20ms,第三阶段为20ms-30ms,依次类推。
在实施中,当时间到达第N+1阶段的开始时刻时,即开始接受第N+1阶段的对数据库进行操作的多个事务。
在步骤102中,对第N+1阶段接收到的多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集。
其中,执行事务集中的各事务之间不存在冲突。挂起事务集中的各事务之间可能不存在冲突,也可能存在冲突,具体情况根据挂起事务集包括的事务的不同而不同。
第N阶段的挂起事务集是指未能在第N阶段提交的事务的集合,第N阶段的挂起事务集的事务与第N阶段的执行事务集中的事务存在冲突。
冲突验证是指验证事务之间是否存在冲突,存在冲突的事务不能在同一阶段提交。
在实施中,对第N阶段未能提交的事务(即第N阶段的挂起事务集中的事务),以及在第N+1阶段接收到的事务,进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集。
具体的,在进行冲突验证时,可以将事务包含的读操作集和写操作集中的数据操作,进行冲突验证,从而,验证事务之间是否存在冲突。
另外,如果在第N+1阶段未接收到对数据库进行操作的事务,则步骤102相应的处理过程为,对第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集。
在进行冲突验证时,需要先确定至少一个基准事务,作为第N+1阶段的执行事务集的的第一个事务。具体的,可以随机选取两个事务进行冲突验证,如果存在冲突,则随机选取一个事务添加到第N+1阶段的执行事务集中,作为第N+1阶段的执行事务集中的第一个事务;如果不存在冲突,则可以将这两个事务均添加到第N+1阶段的执行事务集中。
在一种可能的实现方式中,为了让接收时间早的事务尽量早的提交,则步骤102的处理过程可以如下所述,将第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务。将多个事务和第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果该事务与第N+1阶段的执行事务集中的事务不存在冲突,则将该事务添加到第N+1阶段的执行事务集中。将未添加到第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
其中,第N阶段的挂起事务集中接收时间最早的事务即为现在未提交的多个事务中接收时间最早的事务,也即前述基准事务。
在实施中,通过将第N阶段的挂起事务集中接收时间最早的事务,作为第N+1阶段的执行事务集中的第一个事务,使得接收时间早的事务尽可能先提交。另外,通过按照事务的接收顺序,将各事务与第N+1阶段的执行事务集中的事务进行冲突验证,并将不存在冲突的事务,添加到第N+1阶段的执行事务集中,也使得接收时间早的事务尽可能先提交。
将未添加到第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集中。
另外,为了减少事务提交的等待时间,使接收到的事务尽可能早的提交,在一种可能的实现方式中,对于第N+1阶段接收到的每个事务,将该事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将该事务添加到第N阶段的执行事务集中。
在实施中,对于第N+1阶段接收到的事务,如果其与第N阶段的执行事务集中的事务不存在冲突,且当前基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则可以将该第N+1阶段接收到的事务,提前到第N阶段提交,从而,减少事务等待提交的时间。可选的,可以是在第N+1阶段每接收到一个事务,即将其与第N阶段的执行事务集中的事务集进行冲突验证。
如图4所示,提供了一种对事务进行冲突验证的过程示意图。首先,在第N+1阶段接收到一个对数据库进行操作的数据。然后判断当前第N阶段的执行事务集中的事务操作是否完成。
如果已完成,则将该事务与第N+1阶段的执行事务集中的事务进行冲突验证。如果有冲突,则将该事务添加到第N+1阶段的挂起事务集中;如果没有冲突,则将该事务添加到第N+1阶段的执行事务集中。
如果未完成,则将该事务与第N阶段的执行事务集中的事务进行冲突验证。如果无冲突,则将该事务添加到第N阶段的执行事务集中;如果有冲突,则将该事务与第N+1阶段的执行事务集中的事务进行冲突验证,如果仍然有冲突,则将该事务添加到第N+1阶段的挂起事务集中,如果没有冲突,则将该事务添加到第N+1阶段的执行事务集中。
通过上述论述可以看出,第N阶段提交的事务,并不一定在第N阶段对应的时间段内提交完成,也即,第N阶段提交的事务,可能会在第N+1阶段对应的时间段内运行。
需要补充的是,如果是第一阶段的事务的提交,则其对应步骤为,对第一阶段接收到的多个事务进行冲突验证,得到第一阶段的执行事务集和第一阶段的挂起事务集。
具体的,首先将第一阶段接收到的多个事务中接收时间最早的事务,确定为第一阶段的执行事务集中的第一个事务。将第一阶段后续接收到的每个事务,按照事务接收的顺序,依次与第一阶段的执行事务集中的事务进行冲突验证,如果该事务与第一阶段的执行事务集中的事务不存在冲突,则将该事务添加到底一阶段的执行事务集中。将未添加到第一阶段的执行事务集中的事务,添加到第一阶段的挂起事务集。
另外,步骤101和步骤102可以并不存在先后关系,也即,在进行接收第N+1阶段的对数据库进行操作的事务的同时,也可以进行对事务的冲突验证,步骤101和步骤102可以是同时进行的,可以是每在第N+1阶段接收到一个事务,即对该事务与第N+1阶段的执行事务集中的事务进行冲突验证。
在步骤103中,基于第N+1阶段的执行事务集中的各事务,对修改版本数据集中的数据进行操作。
在实施中,根据执行事务集中的各事务包括的读操作集和写操作集,对修改版本数据集中的对应数据进行相应的读操作和写操作。对于每个事务,如果该事务包括的读操作集和写操作集中的读操作、写操作均操作成功,则说明事务操作成功。
对于每个事务,如果该事务包括的读操作集和写操作集中有任一一个读操作或写操作操作失败,则说明事务操作失败。如果操作失败,则应重新基于该事务,进行数据操作。另外,当事务操作失败时,由于事务中的某些数据操作已经执行,某些数据操作未执行,则对应的数据会处于不一致的状态,此时应先将对应数据回滚到一致性状态,然后,才能重新基于该事务进行数据操作。
例如,某一事务是关于银行账户转账的事务,则事务可以包括两个数据操作,第一个数据操作是在第一账户中减少目标数量的钱,第二个数据操作是在第二账户中增加目标数量的钱。则这两个数据操作要么均操作成功,要么均不进行操作。假如,第一个数据操作操作成功,第二个数据操作操作失败,则需要将数据回滚到第一数据操作操作前的状态,然后,重新进行第一数据操作和第二数据操作。
当某一事务操作失败时,具体的处理过程可以如下所述。
对于第N+1阶段的执行事务集中的各事物,如果基于该事务,对修改版本数据集中的目标数据进行的操作失败,则基于目标数据在稳定版本数据集中的对应数据,将目标数据回滚到一致性状态,并重新基于该事务,对修改版本数据集中的目标数据进行操作。
本申请实施例提供的方法,通过在数据库中维持一个修改版本数据集和一个稳定版本数据集,使得可以通过稳定版本数据集中的数据,将修改版本数据集中的相应数据回滚到一致性状态,从而,不必预先写日志,不必加锁,缩短了事务提价的延迟。
可以理解的是,上述步骤103执行的前提是,第N阶段的执行事务集中的各事务已经均提交成功,也即第N阶段的写磁盘已经完成。如果第N阶段的执行事务集中的事务还未提交成功,则即使第N+1阶段的执行事务集已经确定,也不会执行步骤103的处理,以避免两批事务的提交冲突。
另外,步骤103和步骤102也可以并不存在先后关系,也即,在基于执行事务集中的事务,对修改版本数据集中的数据进行操作的同时,也可以进行对事务的冲突验证,步骤103和步骤102可以是同时进行的。
在步骤104中,将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中。
其中,有修改的数据是指被第N+1阶段的执行事务集中的事务影响到的数据,例如,更改过的数据、增加的数据和删除的数据等。
在实施中,当操作完成后,将修改版本数据集中有修改的数据,拷贝到稳定版本数据集中,从而对稳定版本数据集中的数据进行更新,以使修改版本数据集与稳定版本数据集中的数据在下一阶段的事务提交开始前保持一致。
在步骤105中,基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
其中,拷贝后的稳定版本数据集是指,将修改版本数据集中的有修改的数据,拷贝到稳定版本数据集中之后的稳定版本数据集。
在实施中,当将修改版本数据集中的有修改的数据拷贝到稳定版本数据集中之后,即可将稳定版本数据集中的数据写入磁盘中。在一种可能的实现方式中,可以将修改版本数据集中的全部数据写入磁盘中。
在另一种可能的实现方式中,为了提高效率,可以将拷贝后的稳定版本数据集中有修改的数据,写入磁盘中。
其中,有修改的数据是指被第N+1阶段的执行事务集中的事务影响到的数据,例如,更改过的数据、增加的数据和删除的数据等。
在实施中,通过只将拷贝后的稳定版本数据集中有修改的数据写入磁盘中,提高了磁盘的写入效率,进而,提高了事务的提交效率,减少了事务提交的延迟。
当写磁盘成功后,则说明第N+1阶段的事务提交成功,则可以进行下一阶段的事务的提交,即进行第N+2阶段的事务的提交。
另外,在写磁盘时,通过一次性写入执行事务集中的多个事务操作后的数据,减少了磁盘磁头的移动次数,从而,也加快了写磁盘的效率,缩短了事务提交的延迟。
本申请实施例提供的事务提交的方法,通过在数据库中维持两个版本的数据集,即修改版本数据集和稳定版本数据集。在基于事务对数据进行操作时,只对修改版本数据集中的数据进行操作,而不对稳定版本数据集中的数据进行改变。这样,当对修改版本数据集中的数据操作失败时,可以基于稳定版本数据集中的数据,将修改版本数据集中的数据回滚到一致性状态,从而,可以重新执行事务操作,不需要预先写日志,不需要加锁,在一定程度上缩短了事务提交的延迟。另外,在进行事务提交时,通过生成执行事务集,从而对事务进行批量提交,这也可以缩短事务提交的延迟。而且,通过使在第N+1阶段接收到的事务,在满足与第N阶段的执行事务集中的事务不存在冲突,且第N阶段的执行事务集中的事务未操作完成的条件下,可以加入到第N阶段的执行事务集中,缩短了事务提交的等待时间,从而,也可以缩短事务提交的延迟。
另外,为了使本案更加清楚,对第一阶段的事务提交的方法进行补充,方法包括:
接收第一阶段的对数据库进行操作的多个事务;
对第一阶段接收到的多个事务进行冲突验证,得到第一阶段的执行事务集和第一阶段的挂起事务集;
基于第一阶段的执行事务集中的各事务,对修改版本数据集中的数据进行操作;
将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
可见,在第一阶段的事务提交过程中,在进行冲突验证时,由于此时不存在挂起事务集,所以只需对第一阶段接收到的事务进行冲突验证,以得到第一阶段的执行事务集和第一阶段的挂起事务集。第一阶段的事务提交的其余步骤与其余阶段的事务提交的相应步骤类似,具体的可以参见前文相应内容。
基于相同的技术构思,本申请实施例还提供了一种事务提交的装置,该装置可以为上述实施例中的服务器,如图2所示,该装置包括:
接收模块201,用于接收第N+1阶段的对数据库进行操作的多个事务,其中,数据库包括修改版本数据集和稳定版本数据集,N为大于或等于1的整数;
验证模块202,用于对多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,执行事务集中的各事务之间不存在冲突;
操作模块203,用于基于第N+1阶段的执行事务集中的各事务,对修改版本数据集中的数据进行操作;
拷贝模块204,用于将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
写入模块205,用于基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
在一种可能的实现方式中,验证模块202,用于:
将第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务;
将第N+1阶段接收到的多个事务和第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果该事务与第N+1阶段的执行事务集中的事务不存在冲突,则将该添加到第N+1阶段的执行事务集中;
将未添加到第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
在一种可能的实现方式中,事务提交的装置还包括添加模块,用于:
对于第N+1阶段接收到的每个事务,将该事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将该事务添加到第N阶段的执行事务集中。
在一种可能的实现方式中,操作模块203,用于:
对于第N+1阶段的执行事务集中的各事物,如果基于该事务,对修改版本数据集中的目标数据进行的操作失败,则基于目标数据在稳定版本数据集中的对应数据,将目标数据回滚到一致性状态,并重新基于该事务,对修改版本数据集中的目标数据进行操作。
在一种可能的实现方式中,拷贝模块204,用于:
将拷贝后的稳定版本数据集中有修改的数据,写入到磁盘中。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的事务提交的装置在进行事务提交时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务提交的装置与事务提交的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图3是本申请实施例提供的一种服务器的结构示意图,该服务器300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)301和一个或一个以上的存储器302,其中,存储器302中存储有至少一条指令,该至少一条指令由处理器301加载并执行以实现上述事务提交的方法。
在示例性实施例中,还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述实施例中的事务提交的方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种事务提交的方法,其特征在于,所述方法包括:
接收第N+1阶段的对数据库进行操作的多个事务,其中,所述数据库包括修改版本数据集和稳定版本数据集,N为大于或等于1的整数;
对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,所述执行事务集中的各事务之间不存在冲突;
基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作,且对于所述第N+1阶段的执行事务集中的各事务,如果基于事务,对所述修改版本数据集中的目标数据进行的操作失败,则基于所述目标数据在稳定版本数据集中的对应数据,将所述目标数据回滚到一致性状态,并重新基于事务,对所述修改版本数据集中的目标数据进行操作;
将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
2.根据权利要求1所述的方法,其特征在于,所述对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,包括:
将所述第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务;
将所述多个事务和所述第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与所述第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果事务与所述第N+1阶段的执行事务集中的事务不存在冲突,则将事务添加到所述第N+1阶段的执行事务集中;
将未添加到所述第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
3.根据权利要求1所述的方法,其特征在于,所述接收第N+1阶段的对数据库进行操作的多个事务之后,还包括:
对于第N+1阶段接收到的每个事务,将事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将事务添加到所述第N阶段的执行事务集中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述基于拷贝后的稳定版本数据集中的数据,进行写磁盘,包括:
将所述拷贝后的稳定版本数据集中有修改的数据,写入到磁盘中。
5.一种事务提交的装置,其特征在于,所述装置包括:
接收模块,用于接收第N+1阶段的对数据库进行操作的多个事务,其中,所述数据库包括修改版本数据集和稳定版本数据集,N为大于或等于1的整数;
验证模块,用于对所述多个事务和第N阶段的挂起事务集中的事务进行冲突验证,得到第N+1阶段的执行事务集和第N+1阶段的挂起事务集,其中,所述执行事务集中的各事务之间不存在冲突;
操作模块,用于基于所述第N+1阶段的执行事务集中的各事务,对所述修改版本数据集中的数据进行操作,且对于所述第N+1阶段的执行事务集中的各事务,如果基于事务,对所述修改版本数据集中的目标数据进行的操作失败,则基于所述目标数据在稳定版本数据集中的对应数据,将所述目标数据回滚到一致性状态,并重新基于事务,对所述修改版本数据集中的目标数据进行操作;
拷贝模块,用于将操作完成的修改版本数据集中有修改的数据,拷贝到稳定版本数据集中;
写入模块,用于基于拷贝后的稳定版本数据集中的数据,进行写磁盘。
6.根据权利要求5所述的装置,其特征在于,所述验证模块,用于:
将所述第N阶段的挂起事务集中接收时间最早的事务,确定为第N+1阶段的执行事务集中的第一个事务;
将所述多个事务和所述第N阶段的挂起事务集中除接收时间最早的事务之外的事务,按照事务接收的顺序,依次与所述第N+1阶段的执行事务集中的事务进行冲突验证,对于每个事务,如果事务与所述第N+1阶段的执行事务集中的事务不存在冲突,则将事务添加到所述第N+1阶段的执行事务集中;
将未添加到所述第N+1阶段的执行事务集中的事务,添加到第N+1阶段的挂起事务集。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括添加模块,用于:
对于第N+1阶段接收到的每个事务,将事务与第N阶段的执行事务集中的事务进行冲突验证,如果不存在冲突,且基于第N阶段的执行事务集中的各事务,对修改版本数据集中的数据进行的操作尚未完成,则将事务添加到所述第N阶段的执行事务集中。
8.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1-4任一项所述的事务提交的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1-4任一项所述的事务提交的方法。
CN201911086637.6A 2019-11-08 2019-11-08 事务提交的方法和装置 Active CN110865874B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911086637.6A CN110865874B (zh) 2019-11-08 2019-11-08 事务提交的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911086637.6A CN110865874B (zh) 2019-11-08 2019-11-08 事务提交的方法和装置

Publications (2)

Publication Number Publication Date
CN110865874A CN110865874A (zh) 2020-03-06
CN110865874B true CN110865874B (zh) 2023-07-04

Family

ID=69653195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911086637.6A Active CN110865874B (zh) 2019-11-08 2019-11-08 事务提交的方法和装置

Country Status (1)

Country Link
CN (1) CN110865874B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748589B1 (en) * 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
CN102722401A (zh) * 2012-04-25 2012-10-10 华中科技大学 一种硬件事务内存***中的伪相联多版本数据管理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748589B1 (en) * 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
CN102722401A (zh) * 2012-04-25 2012-10-10 华中科技大学 一种硬件事务内存***中的伪相联多版本数据管理方法

Also Published As

Publication number Publication date
CN110865874A (zh) 2020-03-06

Similar Documents

Publication Publication Date Title
US9389905B2 (en) System and method for supporting read-only optimization in a transactional middleware environment
CN103150206B (zh) 高效且一致的软件事务存储器
US9501502B2 (en) Locking protocol for partitioned and distributed tables
US11386065B2 (en) Database concurrency control through hash-bucket latching
EP2825958B1 (en) Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls
CN112598525B (zh) 一种智能合约分簇并行的区块链实现方法及装置
CN102282548A (zh) 事务性的存储器中的事务处理
US11663170B2 (en) Method for associating data between a plurality of blockchain networks and apparatus thereof
Wojciechowski et al. Model-driven comparison of state-machine-based and deferred-update replication schemes
US20210303403A1 (en) Transaction processing method, apparatus, and electronic device for blockchain
CN115408411A (zh) 数据写入方法、装置、电子设备及存储介质
CN105938446B (zh) 基于rdma和硬件事务性内存支持的数据复制容错方法
CN112559496B (zh) 一种分布式数据库事务原子性实现方法及装置
CN112765126B (zh) 数据库事务的管理方法、装置、计算机设备和存储介质
US11237925B2 (en) Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture
US20230394027A1 (en) Transaction execution method, computing device, and storage medium
CN110865874B (zh) 事务提交的方法和装置
US11132351B2 (en) Executing transactions based on success or failure of the transactions
CN110162569A (zh) 基于gg同步进程的数据处理方法、装置及计算机设备
CN115760405A (zh) 交易执行方法、装置、计算机设备及介质
CN114816682A (zh) 分布式事务处理方法、***及装置
CN115292335A (zh) 事务处理方法、装置及电子设备
CN112508577A (zh) 区块生成及验证的方法、装置、电子设备和可读存储介质
US20230069165A1 (en) Byzantine fault tolerant pre-preprocessing for state machine replication
CN112667148A (zh) 一种集群存储数据在线迁移的方法及***

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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20200306

Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

Contract record no.: X2021440000031

Denomination of invention: Method and device of transaction submission

License type: Common License

Record date: 20210125

GR01 Patent grant
GR01 Patent grant