CN115292335A - 事务处理方法、装置及电子设备 - Google Patents
事务处理方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115292335A CN115292335A CN202210495253.5A CN202210495253A CN115292335A CN 115292335 A CN115292335 A CN 115292335A CN 202210495253 A CN202210495253 A CN 202210495253A CN 115292335 A CN115292335 A CN 115292335A
- Authority
- CN
- China
- Prior art keywords
- transaction
- target data
- data
- target
- processing
- 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.)
- Pending
Links
Images
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
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种事务处理方法、装置及电子设备。该方法包括:检测第一事务针对的目标数据是否被第二事务所占用,该第一事务包括处理目标数据的操作,第二事务是与第一事务并行的其他事务;响应于目标数据被第二事务所占用,根据该第二事务对目标数据的占用类型和该第一事务包括的处理目标数据的操作的类型,执行第一事务包括的操作以处理目标数据。本申请实施例无需系统调用对并行的第一事务和第二事务针对同一目标数据进行处理的场景进行控制,避免了频繁陷入操作系统内核态,提高了事务处理效率,提高了系统的吞吐量。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种事务处理方法、装置及电子设备。
背景技术
事务是指访问数据库并可能更新数据库中各种数据的一个程序执行单元,一个事务包括对至少一个数据进行处理的至少一个操作。在数据库技术领域中,存在事务处理方法,该方法基于数据库中的数据执行各个事务所包括的操作。
相关技术中,基于数据库中的数据进行多个事务并行处理时,需要通过同步机制对正在被处理的数据进行限定,以保证任一数据在同一时间仅被一个事务中的操作所处理。该过程基于系统调用进行,需要通过频繁访问在内核态运行的程序的接口才能够访问到相应的数据,该过程涉及了大量的指令调用过程,影响了事务处理效率和系统吞吐量;且在任一事务需要访问处理的数据被其他事务占用时,该事务易出现无限期等待的情况,事务处理时间长,导致事务处理效率低。
发明内容
本申请实施例提供了一种事务处理方法、装置及电子设备,以实现对事务处理过程的高效管理。
一方面,提供了一种事务处理管理方法,该方法包括:
检测第一事务针对的目标数据是否被第二事务所占用,所述第一事务包括处理所述目标数据的操作,所述第二事务是与所述第一事务并行的其他事务;
响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据。
在一种可能的实现方式中,所述检测第一事务针对的目标数据是否被第二事务所占用,包括:
读取所述目标数据携带的指示信息,所述指示信息包括占用所述目标数据的事务的事务编号;基于所述指示信息包括的事务编号为所述第二事务的事务编号,则确定所述目标数据被所述第二事务所占用。
在一种可能的实现方式中,其特征在于,所述响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据,包括:
响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为更新操作,则在所述第二事务的处理结果被提交后,根据所述第一事务包括的操作更新所述目标数据;
响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为读取操作,则根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的操作读取所述目标数据。
在一种可能的实现方式中,所述根据所述第二数据对所述目标数据的占用类型和所述第一事务包括的操作读取所述目标数据,包括:
确定所述第二事务对所述目标数据的占用类型;
响应于所述占用类型指示在所述第二事务占用所述目标数据过程中,禁止除所述第二事务外的其他事务所包括的操作更新和读取所述目标数据,则在所述第二事务的处理结果被提交后,根据所述第一事务的隔离等级执行所述第一事务包括的操作以读取所述目标数据,所述第一事务的隔离等级用于指示所述第一事务包括的读取所述目标数据的操作对应的读取规则。
在一种可能的实现方式中,所述第一事务包括的处理所述目标数据的操作为更新操作,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
设置所述目标数据的指示信息,所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示在执行所述第一事务包括的操作以更新所述目标数据的过程中,禁止执行其他事务包括的读取或更新所述目标数据的操作;执行所述第一事务包括的操作以更新所述目标数据。
在一种可能的实现方式中,所述第一事务包括的处理所述目标数据的操作为读取操作,所述第一事务的隔离等级为可串行化,所述根据所述第一事务的隔离等级执行所述第一事务包括的操作以读取所述目标数据,包括:
设置所述目标数据的指示信息,所述指示信息包括所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示执行所述第一事务包括的操作以读取所述目标数据的过程中,禁止执行其他事务所包括的更新所述目标数据的操作;执行所述第一事务包括的操作以读取所述目标数据。
在一种可能的实现方式中,所述第一事务包括多个操作,每个操作分别针对相应的目标数据,多个目标数据包括的第一目标数据被所述第二事务占用,所述多个操作按执行顺序排列,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
响应于在第一时间间隔内完成所述第二事务的处理结果的提交,在所述第二事务的处理结果被提交后,执行所述第一事务包括的处理所述第一目标数据的第一操作,执行所述第一事务包括的执行顺序在所述第一操作之后的操作;
响应于在所述第一时间间隔内未完成所述第二事务的处理结果的提交,则在所述第一时间间隔后,重新执行所述第一事务包括的执行顺序在第一操作之前的操作;响应于所述第一操作执行完成,执行所述第一事务包括的执行顺序在所述第一操作之后的操作。
在一种可能的实现方式中,所述第一事务的隔离类型为快照隔离,所述第一事务包括的操作为读取多个时间版本的目标数据中与目标时间戳对应的目标版本数据,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
确定所述目标数据的多个差分版本的数据,所述多个差分版本包括所述目标时间戳对应的差分版本以及在所述目标时间戳对应的时间之前形成的差分版本,所述差分版本指任一事务包括的更新操作对所述目标数据进行更新的内容;合并所述目标数据的基础版本与所述多个差分版本的数据,得到所述多个数据版本的目标数据中与所述目标时间戳对应的目标版本数据。
在一种可能的实现方式中,所述方法还包括:
基于合并时间间隔,定期对所述目标数据的基础版本与所述目标数据的差分版本的数据进行合并,得到合并后的数据,所述合并后的数据用于更新所述目标数据的基础版本。
一方面,提供了一种事务处理装置,该装置包括:
检测模块,用于检测第一事务针对的目标数据是否被第二事务所占用,所述第一事务包括处理所述目标数据的操作,所述第二事务是与所述第一事务并行的其他事务;
执行模块,用于响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据。
在一种可能的实现方式中,所述检测模块,用于读取所述目标数据携带的指示信息,所述指示信息包括占用所述目标数据的事务的事务编号;基于所述指示信息包括的事务编号为所述第二事务的事务编号,则确定所述目标数据被所述第二事务所占用。
在一种可能的实现方式中,所述执行模块,用于响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为更新操作,则在所述第二事务的处理结果被提交后,根据所述第一事务包括的操作更新所述目标数据;响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为读取操作,则根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的操作读取所述目标数据。
在一种可能的实现方式中,所述执行模块,用于确定所述第二事务对所述目标数据的占用类型;响应于所述占用类型指示在所述第二事务占用所述目标数据过程中,禁止除所述第二事务外的其他事务所包括的操作更新和读取所述目标数据,则在所述第二事务的处理结果被提交后,根据所述第一事务的隔离等级执行所述第一事务包括的操作以读取所述目标数据,所述第一事务的隔离等级用于指示所述第一事务包括的读取所述目标数据的操作对应的读取规则。
在一种可能的实现方式中,所述第一事务包括的处理所述目标数据的操作为更新操作,所述执行模块,用于设置所述目标数据的指示信息,所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示在执行所述第一事务包括的操作以更新所述目标数据的过程中,禁止执行其他事务包括的读取或更新所述目标数据的操作;执行所述第一事务包括的操作以更新所述目标数据。
在一种可能的实现方式中,所述第一事务包括的处理所述目标数据的操作为读取操作,所述第一事务的隔离等级为可串行化,所述执行模块,用于设置所述目标数据的指示信息,所述指示信息包括所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示执行所述第一事务包括的操作以读取所述目标数据的过程中,禁止执行其他事务所包括的更新所述目标数据的操作;
执行所述第一事务包括的操作以读取所述目标数据。
在一种可能的实现方式中,所述第一事务包括多个操作,每个操作分别针对相应的目标数据,多个目标数据包括的第一目标数据被所述第二事务占用,所述多个操作按执行顺序排列,所述执行模块,用于响应于在第一时间间隔内完成所述第二事务的处理结果的提交,在所述第二事务的处理结果被提交后,执行所述第一事务包括的处理所述第一目标数据的第一操作,执行所述第一事务包括的执行顺序在所述第一操作之后的操作;响应于在所述第一时间间隔内未完成所述第二事务的处理结果的提交,则在所述第一时间间隔后,重新执行所述第一事务包括的执行顺序在第一操作之前的操作;响应于所述第一操作执行完成,执行所述第一事务包括的执行顺序在所述第一操作之后的操作。
在一种可能的实现方式中,所述第一事务的隔离类型为快照隔离,所述第一事务包括的操作为读取多个时间版本的目标数据中与目标时间戳对应的目标版本数据,所述执行模块,用于确定所述目标数据的多个差分版本的数据,所述多个差分版本包括所述目标时间戳对应的差分版本以及在所述目标时间戳对应的时间之前形成的差分版本,所述差分版本指任一事务包括的更新操作对所述目标数据进行更新的内容;合并所述目标数据的基础版本与所述多个差分版本的数据,得到所述多个数据版本的目标数据中与所述目标时间戳对应的目标版本数据。
在一种可能的实现方式中,所述装置还包括:
合并模块,用于基于合并时间间隔,定期对所述目标数据的基础版本与所述目标数据的差分版本的数据进行合并,得到合并后的数据,所述合并后的数据用于更新所述目标数据的基础版本。
另一方面,提供了一种电子设备,该电子设备包括处理器和存储器,该存储器中存储有至少一条程序代码或指令,该至少一条程序代码或指令由处理器加载并执行,以使电子设备实现上述任一的事务处理方法。
另一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码或指令,该程序代码由处理器加载并执行,以使计算机实现上述任一项事务处理方法。
另一方面,提供了一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品中存储有至少一条计算机指令,该至少一条计算机指令由处理器加载并执行,以使计算机实现上述任一项事务处理方法。
本申请实施例提供的技术方案,通过检测目标数据被与第一事务并行的第二事务的占用情况,基于第二事务对目标数据的占用类型和第一事务包括的操作对目标数据进行处理,该过程基于对目标数据的检测实现并行事务的处理,无需系统调用对并行的第一事务和第二事务针对同一目标数据进行处理的场景进行控制,避免了频发陷入操作系统内核态,提高了事务处理效率,提高了系统的吞吐量。
附图说明
图1为本申请实施例提供的一种实施环境的示意图;
图2为本申请实施例提供的一种事务处理的流程图;
图3为本申请实施例提供的一种数据存储示意图;
图4为本申请实施例提供的一种服务器的结构示意图;
图5为本申请实施例提供的一种在线事务处理界面示意图;
图6为本申请实施例提供的一种命令行事务处理界面示意图;
图7为本申请实施例提供的一种接口事务处理界面示意图;
图8为本申请实施例提供的一种事务处理装置的示意图;
图9为本申请实施例提供的一种电子设备的示意图。
具体实施方式
为了使本领域的人员更好地理解本申请中的技术方法,下面将结合附图对本申请部分实施例进行描述。应理解地,除非另有定义,本申请实施例中使用的所有技术用语均与本领域技术人员通常理解的含义相同,且仅用于对本申请实施例进行解释,而非旨在限定本申请。
参见图1,本申请实施例的实施环境包括终端11和服务器12。终端11和服务器12可以进行通信连接以实现信息的交互传输,本申请实施例对终端11和服务器12的连接方式不作限定。在本申请实施例中,终端11向服务器12提交事务的启动请求,服务器12执行该事务中包括的操作处理该事务针对的数据,然后将处理结果发送给终端11。此外,终端11还发送交互过程中产生的指令至服务器12。
该终端11可以是任何一种可以与用户通过键盘、触摸板、触摸屏、语音交互等一种或多种方式进行人机交互的电子产品,例如PC(Personal Computer,个人计算机)、手机、PPC(Pocket Personal Computer,掌上电脑)、平板电脑、车机等。服务器12可以是一台服务器,也可以是由多台服务器组成的服务器集群,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content DeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本领域技术人员应该能理解上述终端11和服务器12仅为举例,其他现有的或今后可能出现的终端或者服务器如可使用于本申请,也应包含在本申请的保护范围以内,并在此以引用方式包含于此。
本申请实施例应用于数据库技术领域,适用于基于各事务中的操作对数据进行管理的场景。示例性的,本申请的事务处理方法能够应用于资源描述框架(RDF)中,基于RDF数据库包括的大量的RDF数据进行事务处理。当前的RFF数据库的事务处理能力弱,事务处理功能少,本申请提供的事务处理方法能够实现完成高效的事务处理。事务是指访问并可能更新数据库中各种数据的一个程序执行单元,一个事务包括对至少一个数据进行处理的至少一个操作。
数据库事务需要满足四种特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)以及持久性(Durability)。
原子性:事务是一个不可分割的整体,事务包括的所有操作,仅存在全部完成或者全部不执行的情况,不会出现执行部分操作的情况。对数据执行操作过程中出现异常,数据恢复到事务开始前的状态,该过程可以称为回滚。
一致性:事务开始前和结束后,数据库的完整性约束没有被破坏,数据库中数据的完整性保持一致。例如:用户A账户余额1000元,用户B账户余额2900元,运行用户A向用户B转账100元的事务,转账完成后,用户A账户余额为900,用户B账户余额为3000。转账前后,用户A、B账户余额的加和不变,为3900元。
隔离性:指同一时间,只允许执行一个事务中的操作处理同一数据,不同的事务之间彼此没有任何干扰。示例性的,针对同一数据,用户A和B分别开启事务1和事务2,事务1和事务2并行执行。因此,事务1与事务2要相互隔离。针对事务1,事务2包括的操作不能干扰事务1的执行,用户A感受不到有事务2与事务1并行执行。
持久性:事务完成后,事务中的操作对数据库中数据的所有更新将被持久性地保存到数据库。事务成功完成后,即使发生硬件故障或者数据库崩溃,写入的数据也不会丢失。
参见附图2,本申请实施例提供了一种事务处理方法的流程图。该方法可以应用于服务器。该方法包括但不限于下述步骤201-202。
步骤201,检测第一事务针对的目标数据是否被第二事务所占用,该第一事务包括处理目标数据的操作,第二事务是与第一事务并行的其他事务。
当用户开启第一事务时,系统中可能存在其他用户开启的与当前的第一事务并行的第二事务。在多个事务并行处理的过程中,容易存在不同的事务包括的操作针对相同的数据进行更新或者读取的情况。为保证事务处理结果的准确,一些可能的实现方式中,不同事务所包括的操作不能同时对同一目标数据进行处理,因而,在任一事务包括的操作要对目标数据进行处理时,应当判断该目标数据是否被其他事务占用,然后确定直接执行该任一事务包括的操作,还是等待占用该目标数据的其他事务结束后执行该事务包括的操作。
一种可能的实现方式中,检测第一事务针对的目标数据是否被第二事务所占用,包括:读取目标数据携带的指示信息,该指示信息包括占用该目标数据的事务的事务编号;基于该指示信息包括的事务编号为第二事务的事务编号,确定该目标数据被第二事务所占用。
在本申请实施例中,各个事务对应有相应的事务编号,各个事务的事务编号是唯一的。示例性地,事务编号由服务器随机分配,事务编号存储在事务列表中以用于管理。
在一种可能的实现方式中,在执行步骤201之前,服务器接收终端提交的第一事务的启动请求,服务器基于该第一事务的启动请求开启该第一事务,并为该第一事务分配相应的事务编号。可选的,启动请求的接收和事务编号的分配能够由服务器中的事务调度处理器执行。
示例性地,事务编号的分配由一个严格递增的原子计数器决定,以保证每个事务的事务编号的唯一性,并且能够基于多个事务的事务编号确定该多个事务开启的相对顺序。示例性地,每个事务的事务编号可以为一个64位的编码。
在本申请实施例中,开启第一事务,该第一事务包括对目标数据进行读取或者更新的操作,访问该目标数据,读取该目标数据携带的指示信息,若指示信息为空,则该目标数据还没有被其他事务所占用,第一事务包括的操作能够对该目标数据进行处理;若指示信息不为空,则确定指示信息中包括的事务编号,该指示信息包括的事务标号为当前正在占用该目标数据的事务的事务编号。示例性的,当前事务占用目标数据时,执行正在占用该目标数据的当前事务所包括的更新操作,以更新目标数据。示例性的,若该事务编号为第二事务的事务编号,则确定该目标数据被第二事务所占用,第二事务所包括的操作正在处理该目标数据,则执行下述步骤202以实现该第一事务包括的操作对该目标数据的处理。
在步骤201中,确定第一事务针对的目标数据的方法包括但不限于:基于第一事务的信息确定第一事务针对的目标数据。示例性地,服务器可以通过解析第一事务包括的各操作的指令确定该第一事务的信息;或者通过解析第一事务的启动请求确定第一事务的信息。其中,第一事务包括各操作的指令是用户在终端进行确定并提交的。第一事务的启动请求中携带该事务中的操作要处理的目标数据的信息,例如,该目标数据的信息包括目标数据的存储位置,目标数据对应的时间戳,或者目标数据的版本编号等。
步骤202,响应于目标数据被第二事务所占用,根据该第二事务对目标数据的占用类型和第一事务包括的处理目标数据的操作的类型,执行第一事务包括的操作以处理目标数据。
目标数据被第二事务所占用是指在第二事务所包括的操作对目标数据进行处理的过程中,限制其他事务包括的操作对该目标数据进行处理。不同的占用类型对其他事务包括的操作的限制不同,占用类型对应的限制方式包括但不限于:第一占用类型,用于指示目标数据被第二事务占用过程中,禁止其他事务包括的更新操作对该目标数据进行处理;或者,第二占用类型,用于目标数据被第二事务占用过程中,除禁止其他事务包括的更新操作处理目标数据外,还禁止其他事务包括的读取操作对该目标数据进行处理。
在本申请实施例中,任一事务能够包括对目标数据进行处理的操作,该操作的类型包括但不限于对数据的更新或者读取,读取操作包括但不限于获取数据以及获取数据的相关信息;更新操作包括但不限于对数据的添加、修改、删除等。
本申请实施例不对数据的存储形式等进行限定。示例性的,数据能够以数值、文字、图片等多种形式进行存储;则更新操作可以包括对任一数值形式的数据进行加减计算。
任一事务能够包括一个或者多个操作。事务包括一个操作时,则对一个数据执行相应的操作;事务包括多个操作时,事务中包括的多个操作能够针对相同的数据或者不同的数据进行相应的操作,且数据包括的多个操作具有一定的执行顺序。示例性地,转账操作中,在“用户A向用户B转账X元”的事务中,包括将用户A账户中的存款数值减少X和将用户B账户中的存款数值加上X这两个对不同数据进行更新的操作,且该两个操作的执行顺序是确定的。
在一种可能的实现方式中,响应于目标数据被第二事务所占用,且第一事务包括的处理该目标数据的操作为更新操作,则在第二事务的处理结果被提交后,根据第一事务包括的操作更新目标数据。
在一种可能的实现方式中,第一事务包括的处理目标数据的操作为更新操作,则执行第一事务包括的操作以更新目标数据的过程包括:设置目标数据的指示信息,该指示信息包括第一事务的事务编号和占用类型,占用类型指示在执行第一事务包括的操作以更新目标数据的过程中,禁止执行其他事务包括的读取或更新目标数据的操作;执行第一事务包括的操作以更新目标数据。
本申请实施例中,占用任一数据的当前事务不允许其他事务包括的操作对该任一数据进行更新数据,以避免影响该当前事务的最终结果。因而,第二事务占用目标数据的过程中,若第一事务包括操作为更新目标数据,而该目标数据被并行的第二事务所占用,不论该第二事务包括的操作对目标数据进行读取或者更新操作,均不能够执行第一事务包括的针对目标数据的操作,而需要在第二事务的处理结果被提交后在执行第一事务包括的对目标数据的更新操作。其中,第二事务的处理结果被提交后,第二事务结束,第二事务不再占用目标数据,目标数据的指示信息恢复为空。
在一种可能的实现方式中,响应于该目标数据被第二事务所占用,且第一事务包括的处理目标数据的操作为读取操作,则根据第二事务对所述目标数据的占用类型和第一事务包括的操作读取目标数据。
第二事务对目标数据的占用类型具有多种形式,不同的占用类型对应不同的限制条件,不同的限制条件对其他事务包括的对目标数据进行处理的操作有不同的规定。因而根据第二事务对目标数据的占用类型执行第一事务中包括的操作以读取目标数据。
在一种可能的实现方式中,确定第二事务对目标数据的占用类型;响应于占用类型指示在第二事务占用该目标数据过程中,禁止除第二事务外的其他事务所包括的操作更新和读取该目标数据,则在第二事务的处理结果被提交后,根据第一事务的隔离等级执行第一事务包括的操作以读取该目标数据。
可选地,响应于占用类型指示在第二事务占用该目标数据过程中,禁止除第二事务外的其他事务所包括的操作更新该目标数据,则直接根据第一事务的隔离等级执行该第一事务包括的操作以读取该目标数据。
其中,第一事务的隔离等级用于指示第一事务包括的读取该目标数据的操作对应的读取规则。
本申请实施例包括但不限于读已提交、快照隔离和可串行化这三个隔离等级,事务对应不同的隔离等级时,事务包括的读取操作的执行方式不同,事务包括的操作对读取的数据的指示信息的更新方式不同。
运行在读已提交这一隔离等级下的事务所包括的读取操作,能够读取已提交了处理结果的事务的更新内容,返回该读取操作所针对的数据所对应的最新版本。运行在读已提交隔离等级下的事务所包括的更新操作,能够更新该更新操作针对的数据对应的指示信息,能够用于设置指示信息包括该事务的事务编号以表示该数据被该事务占用,还用于设置该事务对该数据的占用类型为第二占用类型,以指示在该事务占用该数据过程中,禁止其他事务所包括的操作更新或者读取该数据。此时,第二占用类型指示的该事务占用该数据的过程为执行该事务中包括的更新操作更新该数据的过程。
运行在快照隔离这一隔离等级下的事务所包括的读取操作,能够读取该读取操作所针对的数据的多个版本中,与时间戳对应的版本。运行在快照隔离下的事务所包括的更新操作,能够更新该更新操作针对的数据对应的指示信息,能够用于设置指示信息包括该事务的事务编号以表示该数据被该事务占用。可选地,该更新操作还用于设置该事务对该数据的占用类型为第二占用类型,以指示在该事务占用该数据过程中,禁止其他事务所包括的操作更新或者读取该数据。此时,第二占用类型指示的该事务占用该数据的过程为执行该事务中包括的更新操作更新该数据的过程。
运行在可串行化这一隔离等级下的事务所包括的读取操作,能够读取已提交了处理结果的事务的更新内容,返回该读取操作所针对的数据所对应的最新版本。该读取操作能够更新该读取操作针对的数据对应的指示信息,能够用于设置指示信息包括该事务的事务编号以表示该数据被该事务占用,还用于设置该事务对该数据的占用类型为第一占用类型,以指示在该事务占用该数据过程中,禁止其他事务所包括的操作更新该数据。此时,第一占用类型指示的该事务占用该数据的过程为执行该事务中包括的读取操作读取该数据的过程。
运行在可串行化隔离等级下的事务所包括的更新操作,能够更新该更新操作针对的数据对应的指示信息,能够用于设置指示信息包括该事务的事务编号以表示该数据被该事务占用,还用于设置该事务对该数据的占用类型为第二占用类型,以指示在该事务占用该数据过程中,禁止其他事务所包括的操作更新或者读取该数据。此时,第二占用类型指示的该事务占用该数据的过程为执行该事务中包括的更新操作更新该数据的过程。
在一种可能的实现方式中,第一事务包括的处理目标数据的操作为读取操作,该第一事务的隔离等级为可串行化,则根据第一事务的隔离等级执行第一事务包括的操作以读取目标数据,包括但不限于:设置目标数据的指示信息,指示信息包括指示信息包括第一事务的事务编号和占用类型,该占用类型指示执行第一事务包括的操作以读取该目标数据的过程中,禁止执行其他事务所包括的更新该目标数据的操作;执行第一事务包括的操作以读取所述目标数据。
在一种可能的实现方式中,在执行步骤201之前,为要启动的第一事务设置相应的隔离等级,然后向服务器提交包括该隔离等级的启动请求,服务器接收该启动请求后启动第一事务,执行第一事务包括的操作。
实际处理中,根据不同事务对应的不同的处理要求,为要启动的事务设置相应的隔离等级,该处理要求可以为对数据库状态的一致性的要求。示例性的,要开启的事务对应的处理要求为获取到强一致的数据库状态,则设置该事务对应的隔离等级为可串行化;或者,要开始的事务对应的处理要求对数据库状态的一致性不严格,则设置该事务对应的隔离等级为快照隔离或者读已提交。
一种可能的实现方式中,第一事务包括多个操作,每个操作分别针对相应的目标数据,多个目标数据中包括的第一目标数据被第二事务占用,该多个操作按照执行顺序排列,则步骤202中执行第一事务包括的操作以处理目标数据的过程包括但不限于:
响应于在第一时间间隔内完成第二事务的处理结果的提交,在第二事务的处理结果被提交后,执行第一事务包括的处理第一目标数据的第一操作,执行第一事务包括的执行顺序在第一操作之后的操作;响应于在第一时间间隔内未完成第二事务的处理结果的提交,则在第一时间间隔后,重新执行第一事务包括的执行顺序在第一操作之前的操作;响应于第一事务包括的多个操作全部执行完毕,提交第一事务的处理结果。
在该种可能的实现方式中,第一事务与第二事务并行处理,各事务包括的操作按照执行顺序依次执行。当第一事务中的任一操作针对的目标数据正在被第二事务占用,一些情况下,需要等待第二事务的处理结果被提交之后再执行第一事务所包括的操作,即第一事务包括的操作处于等待状态。
在该种情况下,从第一事务包括的操作开始等待起,记录第一事务包括的操作的等待时间。若从开始等待起的第一时间间隔内完成第二事务的处理结果的提交,等待时间不超过第一时间间隔,则在第二事务的处理结果被提交后,执行第一事务包括的处理第一目标数据的第一操作,然后执行该第一事务包括的执行顺序在该第一操作之后的操作。若从开始等待起的第一时间间隔内未完成第二事务的处理结果的提交,等待时间超过第一时间间隔,则在等待时间达到第一时间间隔后,按照第一事务包括的多个操作的执行顺序,从排序第一的操作开始,重新执行该第一事务包括的多个操作;在重新执行至第一操作时,若该第一事务在重新执行过程中再次等待的时间不超过第一时间,则在第一操作执行完成后,按照执行顺序依次执行第一事务包括其他操作。
在一种可能的实现方式中,重新执行第一事务所包括的操作的过程中,如果执行第一操作的等待时间依旧超过第一时间间隔,则再次重新按照执行顺序重新执行第一事务包括的操作。在重新执行的次数超过重复阈值的情况下,向终端反馈该第一事务执行失败的消息。其中,重复阈值的设定可以根据第一事务的性质进行确定,也可以是预先设定好的,本申请对重复阈值的数值的设置不作限定。
在上述重复执行第一事务包括的操作的场景下,第一时间间隔随着重复执行次数的增加而增大。在一种可能的实现方式中,当前重复执行过程中的第一时间间隔对应的时间长度为上一次执行过程中第一时间间隔对应的长度的二倍。该种实现方式中,第一时间间隔的增大使得每次执行中的等待时间不断延长,能够减少重复执行的次数,降低计算复杂度,减少资源的消耗。
示例性的,第一事务与第二事务并行执行,执行第一事务中的第一操作时,第一操作针对的数据被第二事务占用,第一操作暂停执行,等待第二事务处理完成,第一时间间隔t后,第二事务未提交处理结果,则重新执行第一事务包括的所有操作。第一次重新执行过程中,执行第一事务的第一操作时,第二事务仍占用相应的数据,此时,第一时间间隔为上一次执行中第一时间间隔的两倍,即2t,若等待时间2t中,第二事务的处理数据被提交,则继续执行第一操作以及第一事务包括的其他操作;若时间2t中,第二事务还未完成,则再次重新执行第一事务包括的所有操作。在第二次重新执行过程中,第一时间间隔为4t。若第二次重新执行过程中仍不能执行第一操作,循环进入第三次重复执行过程,直至第一操作被执行完成,然后继续执行第一事务包括的其他操作;或者直至重复执行的次数超过重复阈值,向终端反馈第一事务执行失败的消息。
一种可能的实现方式中,第一事务的隔离类型为快照隔离,该第一事务包括的操作为读取多个时间版本的目标数据中与目标时间戳对应的目标版本数据,则步骤202中执行第一事务包括的操作以处理目标数据,包括但不限于:
确定目标数据的多个差分版本的数据,多个差分版本包括目标时间戳对应的差分版本以及在该目标时间戳对应的时间之前形成的差分版本,差分版本指任一事务包括的更新操作对目标数据进行更新的内容;合并目标数据的基础数据与多个差分版本的数据,得到多个数据版本的目标数据中与目标时间戳对应的目标版本数据。
在一种可能的实现方式中,合并目标数据的基础数据与多个差分版本的数据可以包括:获取到目标数据的基础版本和多个差分版本后,按照差分版本对应的时间顺序,依次对基础数据进行更新,以得到目标版本数据。
在一种可能的实现方式中,合并目标数据的基础数据与多个差分版本的数据可以包括:获取到目标数据的基础版本和多个差分版本后,将得到的所有差分版本进行去重、合并处理,得到差分版本的合并结果;将该合并结果与基础数据进行合并,以得到目标版本数据。
本申请实施例中,为节省存储的空间,按照差分版本化的方法存储各数据的基础数据与对应的差分版本,各数据的各差分版本分别对应事务包括的更新操对该数据进行更新的内容。示例性的,对一个数据M进行添加数据N的更新操作,则存储基础数据M和基于更新的数据内容生成的差分版本“添加N”。可选的,本申请也可以直接存储更新后的目标数据,示例性地,存储“数据M+N”。
各个差分版本对应有不同的时间戳,该时间戳能够表示该差分版本的生命周期,用于指示生成该差分版本的操作所属的事务的开始时间与结束时间。示例性地,时间戳的表示形式可以为[开始时间,结束时间)。该时间戳基于物理时间与逻辑时间共同生成。其中,物理时间指真实世界中的时间,指示该差分版本对应的事务发生的真实时间;逻辑时间指应用一个逻辑计数器确定的该差分版本对应的事务的处理顺序。该逻辑计数器的计数在各个事务开启过程时进行递增。该确定时间戳的方式可以实现逻辑顺序与物理顺序的结合。
示例性地,先后开启了事务1和事务2,由于时间取值精度的影响,事务1和事务2的开启时间均记录为20时18分30秒,则仅依据物理时间不能确定事务1和事务2的先后顺序。而逻辑时间可以基于计数器的计数记录各个事务开启的先后顺序。因此,本申请实施例中结合物理时间与逻辑时间确定差分版本的时间戳的方法可以获得精确度更高的时间戳,能够更准确地获取执行各事务中包括的操作时所需要的数据,有利于对事务处理效率的提高。
参见图3,图3示出了按照差分版本化的方法存储数据的示意图,其形式为一种邻接链表。其中包括出版本和差分版本1-n。示例性的,差分版本1中对应于时间戳[0,TS1),其中,0和TS1分别对应形成该差分版本的操作所属于的事务的开始时间和结束时间。其中版本头用于指示差分版本的开始,不指示具体数据。
在该种可能的实现方式中,基于图3,若第一事务中的读取操作的指令为读取目标数据在目标时间戳[TS1,TS2)时的目标版本数据,则获取基本版本、差分版本1和差分版本2,然后合并该基础版本、差分版本1和差分版本2,以在基础版本的基础上进行更新合并得到目标时间戳对应的目标版本数据。其中,合并该基础版本、差分版本1和差分版本2的方法可以包括下述两种方式:
方式1:合并基础版本和差分版本1得到合并结果1,然后将合并结果1与差分版本2进行合并,得到目标版本数据。
方式2:合并差分版本1和差分版本2得到差分版本的合并结果,然后合并基础数据和差分版本得到目标版本数据。在一种可能的实现方式中,差分版本1和差分版本2的内容可能为操作相反的更新方式,如差分版本1为增加数据1差分版本为减去数据1,则差分版本的合并结果为不更新基础数据。此时,基础数据即为目标版本数据。在该种可能的实现方式中,减少了进行合并计算的次数,降低了计算复杂度,能够提高事务处理效率。
在一种可能的实现方式中,基于合并时间间隔,定期对目标数据的基础版本与目标数据的差分版本的数据进行合并,得到合并后的结果,合并后的数据用于更新目标数据的基础版本。
在事务处理过程中,每更新一次数据均生成一个对应的差分版本,则容易存储大量的差分版本,大量差分版本占用了大量的存储空间,需要定期对数据中的垃圾数据进行回收清理。因此,在一种可能的实现方式中,每经过合并时间间隔,则对目标数据的基础版本以及清除数量个差分版本数据进行合并,得到合并后的结果,并用合并后的结果更新基础版本。该清除数量可以基于经验设置,也可基于场景设置,本申请实施例对此也不作限定。
其中,合并时间间隔可以表示为物理时间,或者表示已提交事务数量。
合并时间间隔表示为物理时间时,计算上一次执行合并操作的时间到当前时间的时间间隔,在该时间间隔达到合并时间间隔时,执行合并操作。示例性的,设置该合并时间间隔为30分钟,则经过30分钟执行一次合并操作。
合并时间间隔为已提交事务数量时,统计从上一次执行合并操作的时间到当前时间中,完成处理结果提交的事务的数量,在该完成处理结果提交的事务的数量达到合并时间间隔时,执行合并操作。示例性的,设置该合并时间间隔为10000,则每成功完成10000个事务执行一次合并操作。
在执行合并各基础版本和差分版本的过程中,暂时中断对数据库中数据的访问或者更新操作,将数据库中满足清理条件的数据进行清理。
在步骤202之后,响应于第一事务包括的所有操作执行完毕,基于提交指令提交第一事务的处理结果,向终端反馈该第一事务执行成功的消息。
在一种可能的实现方式中,提交指令由用户在终端触发生成。在第一事务包括的所有操作执行完毕后,服务器向终端反馈确认消息,提示用户再次确认是否执行该第一事务,响应于用户反馈确认指令,则向服务器发送提交指令,服务器提交该第一事务的处理结果。
示例性地,用户提交第一事务为“用户A向用户B转账100元”,则该事务中先后执行对用户A的账户减少100元的操作,再执行对用户B的账户添加100元的操作。响应于该两个更新操作均完成,服务器向终端反馈“是否确认转账100”的确认信息,用户发出“确认完成”指令,则向服务器发送提交指令,指示服务器提交该第一事务的执行结果,即将A的账户减少100元的数据和B的账户添加了100元的数据存储在数据库中。服务器向终端反馈“转账完成”信息,提示用户第一事务执行成功。
在一种可能的实现方式中,参见图4,服务器可以包括事务调度处理器、查询器、执行器以及垃圾回收组件实现上述事务处理方法。其中,事务调度处理接收事务的启动请求等指令,还周期性的指示垃圾回收组件进行无用数据的清理;查询器用于解析接收到的启动请求等语句;执行器基于解析后的语句执行对存储层中的数据进行相应的操作,如创建新的差分版本或者在获取数据过程对数据进行合并。
在应用上述事务处理方法对数据进行处理的示例性实施例中,可以应用在线事务处理方法、命令行事务处理方法或者API(Application Programming Interface,应用程序接口)接口方法中的任一种进行实现。参见图5、6、7分别是采用上述方式实施事务处理得到的操作界面示意图。
图5是在线事务处理界面的示意图。其中包括两个事务的执行页面,TID指示事务编号,以事务编号为1的事务进行说明,“insert data{<v1><value>“20”}”是提交的该事务的指令,“The Result”用于指示该事务执行成功后的结果。
图6是命令行事务处理界面的示意图,其中包括对事务编号为4的事务的启动指令。
图7是通过API的调用进行事务处理的界面的示意图,在该图7中示出了多个事务处理的过程。
本申请实施例提供的事务处理方法,基于目标数据的指示信息确定并行的第二事务对该目标数据的占用类型,再基于第一事务对应的隔离等级和包括的操作,执行第一事务包括的针对目标数据的操作,得到第一事务的处理结果。该方式无需系统调用以控制并行的事务对同一数据进行处理,避免了频繁陷入操作系统内核态,提高了事务处理效率,提高了系统吞吐量。且本申请实施例中对差分版本数据的应用,减少了数据对存储空间的占用,提高了对数据进行更新的效率。
本申请实施例提供了一种事务处理装置,该装置用于实现图2示出的事务处理方法。参见图8,该装置包括但不限于:
检测模块801,用于检测第一事务针对的目标数据是否被第二事务所占用,第一事务包括处理目标数据的操作,第二事务是与第一事务并行的其他事务;
执行模块802,用于响应于目标数据被第二事务所占用,根据第二事务对目标数据的占用类型和第一事务包括的处理目标数据的操作的类型,执行第一事务包括的操作以处理目标数据。
在一种可能的实现方式中,检测模块801,用于读取目标数据携带的指示信息,指示信息包括占用目标数据的事务的事务编号;基于指示信息包括的事务编号为第二事务的事务编号,则确定目标数据被第二事务所占用。
在一种可能的实现方式中,执行模块802,用于响应于目标数据被第二事务所占用,且第一事务包括的处理目标数据的操作为更新操作,则在第二事务的处理结果被提交后,根据第一事务包括的操作更新目标数据;响应于目标数据被第二事务所占用,且第一事务包括的处理目标数据的操作为读取操作,则根据第二事务对目标数据的占用类型和第一事务包括的操作读取目标数据。
在一种可能的实现方式中,执行模块802,用于确定第二事务对目标数据的占用类型;响应于占用类型指示在第二事务占用目标数据过程中,禁止除第二事务外的其他事务所包括的操作更新和读取目标数据,则在第二事务的处理结果被提交后,根据第一事务的隔离等级执行第一事务包括的操作以读取目标数据,第一事务的隔离等级用于指示第一事务包括的读取目标数据的操作对应的读取规则。
在一种可能的实现方式中,第一事务包括的处理目标数据的操作为更新操作,执行模块802,用于设置目标数据的指示信息,指示信息包括第一事务的事务编号和占用类型,占用类型指示在执行第一事务包括的操作以更新目标数据的过程中,禁止执行其他事务包括的读取或更新目标数据的操作;执行第一事务包括的操作以更新目标数据。
在一种可能的实现方式中,第一事务包括的处理目标数据的操作为读取操作,第一事务的隔离等级为可串行化,执行模块802,用于设置目标数据的指示信息,指示信息包括指示信息包括第一事务的事务编号和占用类型,占用类型指示执行第一事务包括的操作以读取目标数据的过程中,禁止执行其他事务所包括的更新目标数据的操作;执行第一事务包括的操作以读取目标数据。
在一种可能的实现方式中,第一事务包括多个操作,每个操作分别针对相应的目标数据,多个目标数据包括的第一目标数据被第二事务占用,多个操作按执行顺序排列,执行模块802,用于响应于在第一时间间隔内完成第二事务的处理结果的提交,在第二事务的处理结果被提交后,执行第一事务包括的处理第一目标数据的第一操作,执行第一事务包括的执行顺序在第一操作之后的操作;响应于在第一时间间隔内未完成第二事务的处理结果的提交,则在第一时间间隔后,重新执行第一事务包括的执行顺序在第一操作之前的操作;响应于第一操作执行完成,执行第一事务包括的执行顺序在第一操作之后的操作。
在一种可能的实现方式中,第一事务的隔离类型为快照隔离,第一事务包括的操作为读取多个时间版本的目标数据中与目标时间戳对应的目标版本数据,执行模块802,用于确定目标数据的多个差分版本的数据,多个差分版本包括目标时间戳对应的差分版本以及在目标时间戳对应的时间之前形成的差分版本,差分版本指任一事务包括的更新操作对目标数据进行更新的内容;合并目标数据的基础版本与多个差分版本的数据,得到多个数据版本的目标数据中与目标时间戳对应的目标版本数据。
在一种可能的实现方式中,装置还包括:
合并模块,用于基于合并时间间隔,定期对目标数据的基础版本与目标数据的差分版本的数据进行合并,得到合并后的数据,合并后的数据用于更新目标数据的基础版本。
该事务处理装置用于执行上述事务处理方法,无需系统调用以控制并行的事务对同一数据进行处理,能够频繁陷入操作系统内核态,提高了事务处理效率,提高了系统的吞吐量。且对差分版本数据的应用,减少了数据对存储空间的占用,提高了对数据进行更新的效率。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码或指令,程序代码或指令由处理器加载并执行,以使计算机实现如方法实施例所述的任一事务处理方法。
可选地,上述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品中存储有至少一条计算机指令,该至少一条计算机指令由处理器加载并执行,以使计算机实现上述任一事务处理方法。
图9是本申请实施例提供的一种电子设备的结构示意图,该电子设备900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central ProcessingUnits,CPU)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序指令,该至少一条程序指令由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的事务处理方法。当然,该电子设备900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该电子设备900还可以包括其他用于实现设备功能的部件,在此不做赘述。
需要说明的是本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的对目标数据的获取都是在充分授权的情况下获取的。
应理解,在本申请的各个实施例中,各个过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上。
应理解,在本文中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,单数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
还应理解,术语“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
还应理解,术语“若”和“如果”可被解释为意指“当..时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“若确定...”或“若检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
还应理解,说明书通篇中提到的“一个实施例”、“一实施例”、“一种可能的实现方式”意味着与实施例或实现方式有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”、“一种可能的实现方式”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种事务处理方法,其特征在于,所述方法包括:
检测第一事务针对的目标数据是否被第二事务所占用,所述第一事务包括处理所述目标数据的操作,所述第二事务是与所述第一事务并行的其他事务;
响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据,包括:
响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为更新操作,则在所述第二事务的处理结果被提交后,根据所述第一事务包括的操作更新所述目标数据;
响应于所述目标数据被所述第二事务所占用,且所述第一事务包括的处理所述目标数据的操作为读取操作,则根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的操作读取所述目标数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二数据对所述目标数据的占用类型和所述第一事务包括的操作读取所述目标数据,包括:
确定所述第二事务对所述目标数据的占用类型;
响应于所述占用类型指示在所述第二事务占用所述目标数据过程中,禁止除所述第二事务外的其他事务所包括的操作更新和读取所述目标数据,则在所述第二事务的处理结果被提交后,根据所述第一事务的隔离等级执行所述第一事务包括的操作以读取所述目标数据,所述第一事务的隔离等级用于指示所述第一事务包括的读取所述目标数据的操作对应的读取规则。
4.根据权利要求1-3任一所述的方法,其特征在于,所述第一事务包括的处理所述目标数据的操作为更新操作,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
设置所述目标数据的指示信息,所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示在执行所述第一事务包括的操作以更新所述目标数据的过程中,禁止执行其他事务包括的读取或更新所述目标数据的操作;
执行所述第一事务包括的操作以更新所述目标数据。
5.根据权利要求1-3任一所述的方法,其特征在于,所述第一事务包括的处理所述目标数据的操作为读取操作,所述第一事务的隔离等级为可串行化,所述根据所述第一事务的隔离等级执行所述第一事务包括的操作以读取所述目标数据,包括:
设置所述目标数据的指示信息,所述指示信息包括所述指示信息包括所述第一事务的事务编号和占用类型,所述占用类型指示执行所述第一事务包括的操作以读取所述目标数据的过程中,禁止执行其他事务所包括的更新所述目标数据的操作;
执行所述第一事务包括的操作以读取所述目标数据。
6.根据权利要求1所述的方法,其特征在于,所述第一事务包括多个操作,每个操作分别针对相应的目标数据,多个目标数据包括的第一目标数据被所述第二事务占用,所述多个操作按执行顺序排列,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
响应于在第一时间间隔内完成所述第二事务的处理结果的提交,在所述第二事务的处理结果被提交后,执行所述第一事务包括的处理所述第一目标数据的第一操作,执行所述第一事务包括的执行顺序在所述第一操作之后的操作;
响应于在所述第一时间间隔内未完成所述第二事务的处理结果的提交,则在所述第一时间间隔后,重新执行所述第一事务包括的执行顺序在第一操作之前的操作;响应于所述第一操作执行完成,执行所述第一事务包括的执行顺序在所述第一操作之后的操作。
7.根据权利要求1-3,6任一所述的方法,其特征在于,所述第一事务的隔离类型为快照隔离,所述第一事务包括的操作为读取多个时间版本的目标数据中与目标时间戳对应的目标版本数据,所述执行所述第一事务包括的操作以处理所述目标数据,包括:
确定所述目标数据的多个差分版本的数据,所述多个差分版本包括所述目标时间戳对应的差分版本以及在所述目标时间戳对应的时间之前形成的差分版本,所述差分版本指任一事务包括的更新操作对所述目标数据进行更新的内容;
合并所述目标数据的基础版本与所述多个差分版本的数据,得到所述多个数据版本的目标数据中与所述目标时间戳对应的目标版本数据。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
基于合并时间间隔,定期对所述目标数据的基础版本与所述目标数据的差分版本的数据进行合并,得到合并后的数据,所述合并后的数据用于更新所述目标数据的基础版本。
9.一种事务处理的装置,其特征在于,所述装置包括:
检测模块,用于检测第一事务针对的目标数据是否被第二事务所占用,所述第一事务包括处理所述目标数据的操作,所述第二事务是与所述第一事务并行的其他事务;
执行模块,用于响应于所述目标数据被所述第二事务所占用,根据所述第二事务对所述目标数据的占用类型和所述第一事务包括的处理所述目标数据的操作的类型,执行所述第一事务包括的操作以处理所述目标数据。
10.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器中存储有至少一条程序代码或指令,所述至少一条程序代码或指令由所述处理器加载并执行,以使所述电子设备实现权利要求1-8任一所述的事务处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210495253.5A CN115292335A (zh) | 2022-05-07 | 2022-05-07 | 事务处理方法、装置及电子设备 |
PCT/CN2022/144419 WO2023216636A1 (zh) | 2022-05-07 | 2022-12-31 | 事务处理方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210495253.5A CN115292335A (zh) | 2022-05-07 | 2022-05-07 | 事务处理方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292335A true CN115292335A (zh) | 2022-11-04 |
Family
ID=83820230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210495253.5A Pending CN115292335A (zh) | 2022-05-07 | 2022-05-07 | 事务处理方法、装置及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115292335A (zh) |
WO (1) | WO2023216636A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023216636A1 (zh) * | 2022-05-07 | 2023-11-16 | 北京大学 | 事务处理方法、装置及电子设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7269588B1 (en) * | 2003-09-24 | 2007-09-11 | Oracle International Corporation | Neighborhood locking technique for increasing concurrency among transactions |
CN104679881B (zh) * | 2015-03-13 | 2019-03-08 | 华为技术有限公司 | 一种并发控制方法及装置 |
CN110888717A (zh) * | 2019-11-05 | 2020-03-17 | 中盈优创资讯科技有限公司 | Hdfs的目录操作的事务控制方法及装置 |
CN111475262B (zh) * | 2020-04-02 | 2024-02-06 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
CN111984379B (zh) * | 2020-07-14 | 2023-04-07 | 上海金仕达软件科技股份有限公司 | 读写事务控制方法、系统、终端设备及存储介质 |
CN112463311B (zh) * | 2021-01-28 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN115292335A (zh) * | 2022-05-07 | 2022-11-04 | 北京大学 | 事务处理方法、装置及电子设备 |
-
2022
- 2022-05-07 CN CN202210495253.5A patent/CN115292335A/zh active Pending
- 2022-12-31 WO PCT/CN2022/144419 patent/WO2023216636A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023216636A1 (zh) * | 2022-05-07 | 2023-11-16 | 北京大学 | 事务处理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2023216636A1 (zh) | 2023-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN103782574B (zh) | 用于数据库事务的幂等性 | |
US7103586B2 (en) | Collision avoidance in database replication systems | |
CN112131237B (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
CN110196856B (zh) | 一种分布式数据读取方法及装置 | |
US6434710B1 (en) | Commit controlling scheme for transaction processing in system utilizing check point/roll back scheme | |
CN110188103A (zh) | 数据对账方法、装置、设备和存储介质 | |
CN113094434A (zh) | 数据库同步方法、系统、装置、电子设备及介质 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN112084161A (zh) | 基于数据库的数据处理方法、装置以及可读存储介质 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
CN115292335A (zh) | 事务处理方法、装置及电子设备 | |
CN111127088B (zh) | 实现最终一致性的方法、装置、计算机设备及存储介质 | |
CN115617908A (zh) | 一种MySQL数据同步方法、装置、数据库终端、介质及系统 | |
Son et al. | Real-Time Replication Control for Distributed Database Systems: Algorithms and Their Performance. | |
CN113256355B (zh) | 一种积分权益实时确定方法、装置、介质、设备和系统 | |
CN112559496B (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
CN112800060B (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN109376141B (zh) | 一种数据迁移方法和装置 | |
CN106776052A (zh) | 共享资源访问方法和装置 | |
CN115202925A (zh) | 基于rdma的支持细粒度容错的共识方法及系统 | |
CN112434007A (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 |