CN114691307A - 事务处理方法及计算机系统 - Google Patents
事务处理方法及计算机系统 Download PDFInfo
- Publication number
- CN114691307A CN114691307A CN202210262006.0A CN202210262006A CN114691307A CN 114691307 A CN114691307 A CN 114691307A CN 202210262006 A CN202210262006 A CN 202210262006A CN 114691307 A CN114691307 A CN 114691307A
- Authority
- CN
- China
- Prior art keywords
- transaction
- version
- identifier
- storage space
- storage
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000002085 persistent effect Effects 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 13
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 239000003550 marker Substances 0.000 claims description 3
- 239000000306 component Substances 0.000 description 26
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 6
- 238000002955 isolation Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000008358 core component Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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
- G06F9/467—Transactional memory
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (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示出了本申请提供的一种计算机系统一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例的技术方案应用于数据库系统中,用于对事务进行处理,本申请实施例的技术方案可以由数据库系统中的事务系统执行,事务系统可以是指数据库系统中的事务处理引擎。
为了方便了解本申请技术方案,下面对本申请可能涉及的技术术语进行解释说明:
事务(TRANSACTION):数据库系统中用于访问并可能操作数据对象的一系列操作集合。一个事务可以包括至少一种操作,该至少一种操作可以包括查询操作和/或更新操作,更新操作可以包括插入、删除或替换等。在关系型数据库中,一个事务可以包括一条SQL语句,一组SQL语句等。事务具有原子性、一致性、隔离性以及持久性等特性。事务通常开启命令(BEGIN或START)而开始执行,通过提交命令(COMMIT)或回滚命令(ROLLBACK)而结束执行。
数据对象:数据库系统提供的存储在数据库中的数据,可以是指数据库表中的一条数据记录,也即数据库表的行数据。
回滚日志(Undo log):在多版本并发控制机制中,事务对数据对象进行更新的时候,数据对象的老版本会存放在回滚日志中,再对数据对象进行更新得到新版本,并在新版本中通过回滚指针指向老版本。以数据对象为一条数据记录为例,在数据对象中会设置回滚指针字段,以指向该数据对象的上一个版本。
版本链:由数据对象的最新版本及回滚日志中的老版本构成的版本链。
事务标识:事务启动时分配,用以唯一标识事务,代表事务启动顺序。
事务提交标识:事务提交时分配,用以代表事务提交顺序。
持久化存储介质:用于进行数据永久保存的存储介质,如磁盘等。
内存:内存储器,用于暂时存放处理器中的运算数据。
正如背景技术中所述,目前的多版本并发控制机制中,需要在内存维护两个内存数据结构,并在写事务执行更新操作及读事务执行读取操作时,锁定两个内存数据结构,以实现隔离性的目的,具体实现方式中是根据读事务构建的最小事务标识及最大事务标识,从请求查询的目标数据对象对应的不同版本中,结合不同版本中记录的事务标识,查找可见版本并进行访问:对于当前查找版本,若该当前查找版本记录的事务标识小于最小事务标识,则该版本对于读事务是可见的;若当前查找版本的事务标识大于最大事务标识,则该版本对于读事务是不可见,需要继续查找上一个版本;若当前查找版本包含在该视图对应的当前存活的事务标识集合中,则该版本对于读事务是不可见的,需要继续查找上一个版本。但是这种实现方式存在锁争抢问题,特别是在读写混合场景中,写事务较多会导致活跃事务集合比较大,使得构建视图需要持有更长时间来执行拷贝操作,使得锁争抢问题严重,导致处理器大部分时间耗费在无用等待上,特别是事务系统部署在单机多核场景下,无法吃满处理器资源,导致资源浪费没有得到充分利用,使得处理性能下降。
为了提高处理性能,发明人经过一系列研究提出了本申请的技术方案,在本申请实施例中,第一事务启动情况下,首先从持久化存储介质申请第一事务对应的存储空间;为第一事务更新的至少一个数据对象分别记录存储空间的存储地址;在第一事务提交的情况下,生成第一事务的事务提交标识;在存储空间存储事务提交标识。对于进行数据读取的第二事务时,基于最近生成的事务提交标识,构建第二事务的视图;根据视图中的事务提交标识及目标数据对象版本链中不同版本分别记录的存储地址索引的事务提交标识,从版本链中查找第二事务的可见版本;本申请实施例通过在持久化存储介质中存储的事务提交标识,利用事务提交标识查找可见版本,由于一个事务是否能访问另一个事务更新的版本,取决与一个事务构建视图时候,另一个事务是否已经提交,通过事务提交标识即可以快速高效的查找可见版本,无需长时间在内存中持有锁,解绑了读写对锁的使用冲突,且无需维护复杂的内存数据结构,降低了处理器等待时间,提高了资源利用率,提高了处理性能。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出了本申请实施例的技术方案可以应用于其中的一种示例性系统架构图,该系统可以由请求端101及事务系统102构成,用户可以通过请求端101向事务系统102提交事务;事务系统102基于请求端101的提交的事务,可以启动事务,对数据库103执行事务包含的一系列操作,并在执行成功之后提交事务或者执行失败之后回滚事务等。事务系统102可以接收多个请求端101发送的事务,从而存在多个事务同时并发执行的情况。此外,事务系统102执行结束之后,可以向请求端101反馈执行结果等。
其中,请求端101可以是部署在电子设备中的客户端,电子设备例如可以是智能手机、平板电脑和便携式计算机中的一种或多种,当然也可以是台式计算机等等,为了便于理解,图1中主要以设备形象表示客户端。
事务系统102可以作为软件部署在由存储组件以及处理组件构成的计算机系统中,该计算机系统可以是单个物理机器,或者也可以分布式系统的服务器,或者是结合了区块链的服务器,或者云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。处理组件可以包括一个或多个处理器,一个实际应用中,其可以由一个多核处理器构成。
数据库103可以是本地数据库或者云数据库等,本申请对此不进行限定,数据库103与事务系统102可以部署在同一个物理机器中,数据库103可以部署在该物理机器的持久化存储介质中等。
本申请实施例的数据库可以是指关系型数据库(RDS,Relational DatabaseService),例如MySQL,事务系统例如可以是数据库中用于进行事务处理的核心组件,例如其可以是MySQL的存储引擎InnoDB中的核心组件等。
以下对本申请实施例的技术方案的实现细节进行详细阐述。
图2为本申请实施例提供的一种事务处理方法一个实施例的流程图,本实施例的技术方案由事务系统执行,该方法可以包括以下几个步骤:
201:在第一事务启动的情况下,从持久化存储介质申请第一事务对应的存储空间。
其中,第一事务可以是指任意一个写事务,本申请实施例中的写事务是指包含有更新操作的事务,当然,写事务中也可以包括查询操作等。
第一事务所包含的各个操作串行执行,可以是在第一事务启动,并执行第一个更新操作的情况下,从持久化存储介质申请第一事务对应的存储空间。
可选地,在持久化存储介质中可以预先配置特定的存储结构,可以是在第一事务启动的情况下,从持久化存储介质配置的存储结构中申请第一事务对应的存储空间,从而可以获得存储空间的存储地址,该存储地址可以通过存储空间标识及文件偏移量等表示,本申请对其实现形式不做具体限定。对于每个写事务均可以按照本申请技术方案执行,以在持久化存储介质中分别对应一个存储空间。
其中,第一事务启动可以是在接收到请求端触发的事务处理请求之后启动等。
202:为第一事务更新的至少一个数据对象分别记录存储空间的存储地址。
第一事务可以包括至少一个更新操作,该至少一个更新操作可以用于对至少一个数据对象进行更新,例如包括插入、删除或替换等。该至少一个更新操作按照事务定义顺序串行执行等。
其中,对于每个更新操作更新的数据对象,可以首先在回滚日志中保存该数据对象的旧版本,再对数据对象进行更新以生成最新版本。
实际应用中,数据对象例如可以是指数据库表中的一条数据记录,意即行数据。本申请实施例中,可以在数据记录中增加地址字段,用以存放存储地址,该地址字段可以是指对用户不可见的隐式字段。
203:在第一事务提交的情况下,生成第一事务的事务提交标识。
204:在存储空间存储该第一事务的事务提交标识。
第一事务全部执行成功之后可以触发提交,在第一事务提交的情况下,本申请实施例中,为该第一事务生成事务提交标识,该事务提交标识可以表示第一事务的事务提交时间,以确定第一事务与其它事务的事务提交顺序等。
其中,可以按照递增原则从第一初始数值开始,每次递增第一指定数值而生成事务提交标识。可选地,可以配置第一生成器,在第一事务提交的情况下,请求第一生成器生成该事务提交标识,第一生成器即具体按照递增原则,从第一初始数值开始,每次递增第一指定数值而生成事务提交标识。该第一初始数值例如可以是1,第一指定数值可以为1等。当然,也可以采用其它原则,例如递减原则等来生产事务提交标识,本申请不对此进行具体限定。
作为其它可选方式,也可以将第一事务的事务提交时间作为事务提交标识等。
在第一事务提交的情况下,可以持有锁以生成第一事务的事务提交标识,例如可以锁定第一生成器,使得其它事务无法访问第一生成器,以保证隔离性。
其中,生成的事务提交标识写入该存储空间中。从而,该存储空间可以用于查询该第一事务的事务提交标识。基于该第一事务的事务提交标识,可以查找第二事务请求查询的目标数据对象的可见版本。具体的,该第一事务的事务提交标识可以结合为第二事务构建的视图中的事务提交标识,查找第二事务请求查询的目标数据对象的可见版本。
其中,该目标数据对象可以是该第二事务请求查询的任意对象,其可以是第一事务进行更新的任意对象。第二事务的视图基于最近生成的事务提交标识构建获得。由于事务提交标识可以表示事务提交时间,代表事务提交顺序,从而结合第一事务的事务提交标识及视图中的事务提交标识,可以确定第一事务是否在第二事务生成视图之前已经提交,从而确定目标数据对象被第一事务更新的版本是否对第二事务可见等,第一事务已经提交,则该版本对第二事务可见,为可见版本,否则为不可见版本,可以继续查找该版本链接的上一个版本,具体可以是继续查找不可见版本记录的回滚段指针指向的历史版本等。在事务提交标识采用递增原则生成的情况下,可以具体是在视图中的事务提交标识大于或等于第一事务的事务提交标识时,确定目标数据对象被第一事务进行更新的版本为可见版本,否则为不可见版本。其中,版本链按照非递增顺序进行回溯,获得可见版本之后即可以终止查找,返回该可见版本即可,比如版本链中包括V0、V1、V2以及V3版本,V0的事务提交标识为10,V1的事务提交标识为20,V2的事务提交标识为20、V3的事务提交标识为30,视图中的事务提交标识为21,则从V3版本开始查找,最终确定的可见版本即为V2版本之后即终止,返回V2版本,第二事务即对V2版本进行访问。
此外,若查询获得该存储空间还为记录第一事务的事务提交标识的情况,表明该第一事务可能还未提交,目标数据对象被该第一事务更新的版本即可以直接判定为不可见版本。
本实施例,通过在持久化存储介质中存储事务提交标识,可以快速高效的查找可见版本,无需长时间在内存中持有锁,解绑了读写对锁的使用冲突,且无需维护复杂的内存数据结构,降低了处理器等待时间,从而提高了资源利用率,提高了处理性能。
在一些实施例中,该方法还可以包括:
在第一事务启动的情况下,生成第一事务的事务标识;为至少一个数据对象分别记录该第一事务的事务标识。
本申请实施例中在第一事务启动情况下,也可以生成事务标识,并记录在第一事务进行更新的数据对象中。
其中,目标数据对象被第一事务更新的版本记录的事务标识用于在与第二事务的事务标识一致情况下,确定该版本为可见版本,否则基于该版本记录的存储地址,从存储空间查找第一事务的事务提交标识。若该版本记录的事务标识与第二事务的事务标识一致,表明第二事务和第一事务为同一个事务,第二事务正在访问自己更新的数据对象,由于事务的多个操作是串行执行,不存在冲突问题,因此该版本即可以直接作为可见版本;否则,在不一致的情况下,再去基于该版本记录的存储地址,从索引的存储空间中查找第一事务的事务提交标识,从而再结合第一事务的事务提交标识判断该版本是否为可见版本等。
其中,可以利用第二生成器生成事务标识,事务标识用来唯一标识一个事务,代表事务的启动顺序。例如,可以递增原则,从第二初始数值开始,每次递增第二指定数值而生成事务标识等,本申请对此不进行具体限定。
为了进一步提高处理效率,作为一种可选实现方式,在第一事务提交的情况下,生成第一事务的事务提交标识之后,该方法还可以包括:为至少一个数据对象中的至少部分数据对象分别记录第一事务的事务提交标识。
一种实现情况是该至少部分数据对象可以是全部数据对象。另一种实现情况,在第一请求更新的至少一个数据对象很多情况下,分别为各个数据对象记录第一事务的事务提交标识,将严重影响事务提交性能,因此,该至少部分数据对象可以是从至少一个数据对象中选择的指定数量个数据对象,可以是随机选择或者按照更新先后顺序选择等。该指定数量可以结合实际应用中的设备性能来动态设定等。
作为另一种可选实现方式,该方法还可以包括:在针对任一个数据对象的当前查找版本执行查询操作时,为数据对象的当前查找版本记录从存储空间查询获得的事务提交标识。也即可以是在对任一个数据对象执行查询操作时,再将查询获得的事务提交标识记录在数据对象中。
可选地,针对任一个数据对象的当前查找版本执行查询操作时,可以首先查找该数据对象中是否记录了事务提交标识,若是则作为第一事务的事务提交标识,否则基于当前查找版本记录的存储地址,从存储空间查询事务提交标识,同时将该从存储空间查询获得的事务提交标识记录至该数据对象的当前查找版本中。
其中,数据对象为数据记录的情况下,可以是在数据记录中增加事务提交标识字段,用于存储事务提交标识。该事务提交标识字段可以为隐式字段。
此外,针对任一个数据对象的当前查找版本执行查询操作,从存储空间查询获得事务提交标识之后,还可以在内存中保存该事务提交标识与更新该当前查找版本的写事务的事务标识的对应关系。
因此,针对任一个数据对象的当前查找版本执行查询操作时,可以首先查找该数据对象中是否记录了事务提交标识,否则可以基于该当前查找版本中记录的事务标识,再从内存中查找是否存在更新当前查找版本的写事务对应的事务提交标识,若存在,则可以基于该内存中保存的事务提交标识与视图中的事务提交标识来确定可见版本,此外还可以将该内存中的事务提交标识记录至该数据对象中;若不存在,再基于当前查找版本记录的存储地址,从存储空间查找事务提交标识,同时将该从存储空间查询获得的事务提交标识记录值该数据对象的当前查找版本中。
也即可以是在数据对象被事务更新的版本中未记录事务提交标识以及内存中未保存该事务对应的事务提交标识的情况下,再从存储空间查询事务提交标识。
可选地,为了提高处理性能,可以根据数据库压力以及处理资源使用情况,来确定是否为数据对象的当前查找版本记录从存储空间查询获得的事务提交标识。
此外,为了避免持久化存储介质中的存储结构的无限扩大,该存储结构还可以支持复用,因此,从持久化存储介质中为第一事务申请的存储空间可以是按照复用机制所选择的存储空间,可以是在存储结构不存在空闲空间的情况下,按照复用机制为第一事务选择存储空间。该复用机制例如可以是存储结构中最早使用的存储空间或者在一定时间内未被访问的存储空间或者总访问次数低于预定次数的存储空间等。
在存储空间被复用情况下,还可以将存储空间存储的原有数据转存至其它地方,以方便进行查找等。因此,在一些实施例中,该方法还可以包括:
在存储空间中存储该第一事务的事务标识,由该事务标识及该事务提交标识构成一条记录数据;
在存储空间被复用的情况下,将存储空间存储的原记录数据进行转存,并建立存储空间与原纪录数据的链接关系;该链接关系用于第一事务的事务标识对应的目标记录数据,以获得第一事务的事务提交标识。
在一种实现方式中,该存储结构可以为链表结构,存储空间可以是链表结构中的节点。存储空间被复用的情况下,原纪录数据可以转成至其它节点中。因此,存储空间被复用可以包括基于存储空间的申请事件而被复用,还可以包括基于数据转存事件而被复用等,存储结构中的存储空间可以通过指针链接存储其原记录数据的存储空间等,从而基于不同存储空间的指针所构成的链接关系,即可以查找第一事务的事务标识对应的目标记录数据,以获得目标记录数据中的第一事务的事务提交标识。
此外,为了提高处理效率,在某些实施例中,该方法还可以包括:
在存储结构满足清除条件时,将存储结构中最早生成的事务提交标识对应的记录数据清除。
由于第一事务对应的记录数据可能已经被清除,因此,从存储结构中可能无法查询获得第一事务的事务提交标识,为了保证正常获得可见版本,可以是将最近清除的记录数据中的事务条件标识用于在从存储结构查询不到第一事务的事务提交标识时,作为第一事务的事务提交标识。也即最近清除的记录数据可以作为第一事务的伪事务提交标识,用来查找可见版本。
其中,该清除条件例如可以是指到达定时时间或者指定时间,或者存储结构的存储空间不足。也即可以定时或者在指定时间或者在存储结构不足时,将存储结构中最早生成的事务提交标识对应的记录数据清除。
此外,由于针对目标数据对象查询存储空间时,第一事务可能还未提交,事务提交标识还未生成,存储空间中还未存储事务提交标识,此时即可以判定当前版本为不可见版本。
此外,一些实施例中,还可以根据第一事务的实时事务状态,在存储空间中存储第一事务的事务状态信息,该事务状态信息例如可以包括提交状态以及活跃状态等,其中,活跃状态可以表示事务处于初始阶段或者还未提交等,提交状态表示事务已经终止等。
从而再针对目标数据对象被第一事务更新的版本查询存储空间时,首次查看事务状态信息,若事务状态信息处于活跃状态,此时事务提交标识未生成,该版本即为不可见版本;若事务状态信息处于提交状态,存储空间中存储事务提交标识,此时可以再基于事务提交标识判断该版本是否为可见版本等。
存储空间可以被复用或者被清除的情况,还可以首先查看存储空间存储的事务标识与该版本记录的事务标识是否一致,一致情况下再查看事务状态信息。
上述相应实施例中主要从数据更新角度对本申请技术方案进行介绍,下面主要从数据查询角度对本申请技术方案进行介绍,如图3所示,为本申请实施例提供的一种事务处理方法又一个实施例的流程图,该方法可以包括以下几个步骤:
301:基于最近生成的事务提交标识,构建第二事务的视图。
第二事务可以是指包括查询操作的事务,在一个可选方式中,可以是指仅包括查询操作而不包括更新操作的只读事务。当然,也可以是既包括查询操作,也包括更新操作的事务等。
基于不同的隔离级别需求,基于最近生成的事务提交标识,构建第二事务的视图可以是在第二事务执行查询操作时,获取最近生成的事务提交标识以构建第二事务的视图;或者,在第二事务启动时,获取最近生成的事务提交标识以构建第二事务的视图。
事务提交标识由第一生成器生成情况下,即是基于第一生成器最近生成的事务提交标识,构建第二事务的视图。
302:根据视图中的事务提交标识及目标数据对象的版本链中不同版本分别记录的存储地址索引的事务提交标识,从版本链中查找第二事务的可见版本。
其中,目标数据对象可以是第二事务中的查询操作请求查询的任意一个对象。第二事务可能会执行多个查询操作,基于每个查询操作均可以按照步骤302的方式执行以确定本次查询操作的可见版本。按照上文描述,可以是在执行每个查询操作时,均分别构建视图,或者每个查询操作可以均使用第二事务启动时所构建的视图。
目标数据对象的版本链由目标数据对象的最新版本及历史版本构成,其中,历史版本存储至回滚日志中,版本链中的不同版本通过回滚段指针进行链接。根据每个版本记录的回滚段指针可以找到其对应的上一个版本。
其中,存储地址对应持久化存储介质中的存储空间,存储空间对应一写事务,并在写事务启动时申请,事务提交标识在事务提交时生成。存储空间及事务提交标识的具体实现可以详见图2所示实施例中所述,此处不再重复赘述。
其中,事务提交标识为第一生成器按照递增原则生成的情况下,则根据视图中的事务提交标识及目标数据对象版本链记录的存储地址索引的事务提交标识,从版本链中查找第二事务的可见版本可以是根据视图中的事务提交标识是否大于或等于目标数据对象版本链记录的存储地址索引的事务提交标识的判断结果,从版本链中查找第二事务的可见版本。可以是若任一个版本对应的事务提交标识小于或等于视图中的事务提交标识,则该版本即为可见版本,否则为不可见版本,继续查找该版本链接的上一个版本。
本实施例中,通过在持久化存储介质中存储事务提交标识,可以快速高效的查找第二事务的可见版本,第二事务无需长时间在内存中持有锁,解绑了读写对锁的使用冲突,且无需维护复杂的内存数据结构,降低了处理器等待时间,从而提高了资源利用率,提高了处理性能。
一些实施例中,该根据视图中的事务提交标识及目标数据对象版本链中不同版本分别记录的存储地址索引的事务提交标识,从版本链中查找第二事务的可见版本可以包括:
确定由目标数据对象的最新版本及回滚日志中存储的目标数据对象的历史版本构成的版本链;
从版本链中的最新版本开始,针对任一个版本,执行如下可见性判断操作,其中,可见性判断操作包括:
从该版本记录的存储地址索引的存储空间中,查询更新该版本的第三事务的事务提交标识;
根据视图中的事务提交标识及第三事务的事务提交标识,判断该版本是否为第二事务的可见版本。
其中,从版本链中查找获得一个可见版本或者该版本链不存在可见版本的情况下,即可以结束可见性判断操作操作。
其中,若更新该版本的第三事务还未提交的情况下,事务提交标识未生成,该版本记录的存储地址索引的存储空间中还未存储事务提交标识,此时可以直接判定版本为不可见版本,意即若所述版本记录的存储地址索引的存储空间中未记录事务提交标识,确定所述版本为不可见版本。
此外,一些实施例中,存储空间中还可以存储事务状态信息,因此,可以首先从版本记录的存储地址索引的存储空间,查询事务状态信息,若为活跃状态时,可以直接确定该版本为不可见版本,否则,若未提交状态,再查询事务提交标识。
为了方便描述,将更新该版本的事务命名为第三事务,该第三事务也即为一写事务,针对第三事务启动之后所执行的事务处理操作,可以详见图2所示实施例中所述,与针对第一事务启动之后所执行的事务处理操作相同,此处不再赘述,在一个可能实际场景中,该第三事务即可以为该第一事务。
在事务提交标识按照递增原则生成的情况下,可以是视图中的事务提交标识大于或等于第三事务的事务提交标识的情况下,确定该版本为第二事务的可见版本,则可以针对该可见版本执行查询操作,并生成查询结果,该查询结果可以在第二事务提交之后反馈给请求端等。
若视图中的事务提交标识小于第三事务的事务提交标识的情况下,则确定该版本为不可见版本,则查找该版本链接的上一个版本,继续针对该版本执行可见性判断操作。
由上文相应实施例中的描述可知,在写事务启动之后,可以生成写事务的事务标识,并可以记录在写事务更新的数据对象中。因此,目标数据对象的不同版本还分别记录了事务标识;一些实施例中,根据该版本记录的存储地址索引的存储空间存储的事务提交标识,确定更新该版本的第三事务的事务提交标识可以包括:
在该版本记录的事务标识与第二事务的事务标识一致时,确定该版本为第二事务的可见版本,否则,根据该版本记录的存储地址索引的存储空间存储的事务提交标识,确定更新该版本的第三事务的事务提交标识。其中,该版本记录的事务标识意即为更新该版本的第三事务的事务标识,若其与第二事务的事务标识一致,表明第二事务对其自己更新的数据对象的版本进行查询,由于第二事务的各个操作是串行执行,不存在冲突问题,因此,该版本即直接作为第二事务的可见版本。
一些实施例中,每个写事务对应存储空间中也可以存储该写事务对应的事务标识。由事务标识与对应的事务提交标识构成一条记录数据,存储空间存储记录数据。在存储空间支持复用,并在被复用情况下,将原记录数据进行转存,并建立存储空间与原记录数据的链接关系。其中,存储空间可以是从持久化存储介质的存储结构中申请,该存储结构可以为链表结构,存储空间为链表结构中的节点,原纪录数据可以从一个节点转存至另一个节点中。
该根据该版本记录的存储地址索引的存储空间存储的事务提交标识,确定更新该版本的第三事务的事务提交标识可以包括:
在该版本记录的存储地址索引的存储空间存储的事务标识与该版本记录的事务标识一致时,根据该版本记录的存储地址索引的存储空间存储的事务提交标识,确定更新该版本的第三事务的事务提交标识;
在存储空间存储的事务标识与该版本记录的事务标识不一致时,根据不同存储空间的链接关系,查找第三事务对应的事务提交标识。
一些实施例中,存储空间中还可以存储了事务状态信息,该在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识可以是:
在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,从所述存储空间中查询更新所述版本的第三事务的事务状态信息;
若所述事务状态信息为提交状态,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识;
若所述事务状态信息为活跃状态,确定所述版本为不可见版本。
为了避免存储结果无限扩大,存储结构中的存储空间存储的数据会按照清除机制进行清除,例如将存储结构中最早生成的事务提交标识对应的记录数据清除。
因此,一些实施例中,若该版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识不一致,可以将最近清除的记录数据中的事务提交标识作为第三事务的事务提交标识。
此外,在存储空间支持复用情况下,存储空间的原纪录数据可能是被转存了,可以通过链接关系,查找第三事务对应的事务提交标识,可以是在查找不到第三事务的事务提交标识的情况下,再将最近清除的记录数据中的事务提交标识作为第三事务的事务提交标识。
此外,一些实施例中,由于第二事务可能会执行多次查询操作,在第一次查询操作时查询获得的事务提交标识可以对应第三事务的事务标识保存至内存中。因此,根据该版本记录的存储地址索引的存储空间存储的事务提交标识,确定更新该版本的第三事务的事务提交标识可以包括:
根据该版本记录的第三事务的事务标识,从内存中查找是否保存了对应的事务提交标识;
若是,将内存保存的事务提交标识,作为第三事务的事务提交标识;
若否,从该版本记录的存储地址索引的存储空间,查询第三事务的事务提交标识,并对应第三事务的事务标识保存至内存中。
当然,可以首先判断该版本对应的查询操作是否为第二事务的第一次查询操作,若否,再从内存中查找是否保存了对应的事务提交标识;若是,则可以直接执行从所述版本记录的存储地址索引的存储空间,查询第三事务的事务提交标识,并对应第三事务的事务标识保存至内存中。
一些实施例中,将内存保存的事务提交标识,作为第三事务的事务提交标识的同时,还可以将内存保存的事务提交标识,记录至该版本中;
从该版本记录的存储地址索引的存储空间,查询第三事务的事务提交标识之后,还可以将该存储空间存储的事务提交标识,记录至该版本中。
因此,根据该版本记录的第三事务的事务标识,从内存中查找是否保存了该第三事务的事务提交标识可以包括:
判断该版本中是否记录了第三事务的事务提交标识,若否,根据该版本记录的第三事务的事务标识,从内存中查找是否保存了对应的事务提交标识;
为了进一步方便理解,下面将结合图4所示的事务处理过程示意图对本申请的技术方案进行解释说明。
第一事务启动时或者执行第一次更新操作时,可以对第二生成器加锁,并从第二生成器获取事务标识Trx ID,第二生成器可以按照递增原则生成Trx ID,之后可以释放锁。同时,从持久化存储介质配置的存储结构中为第一事务申请一个存储空间,并获得该存储空间的存储地址TSA。
事务操作的数据对象可以是指一条数据记录。本申请实施例,可以在数据记录中增加事务标识字段、地址字段、事务提交标识字段、回滚指针字段等隐式字段。
第一事务更新某条数据记录A时,首先将该数据记录A的旧版本保存至回滚日志中,之后即对数据记录A中的用户数据进行更新,并在事务标识字段添加上事务标识TrxID,在回滚指针字段添加上指向旧版本的回滚段指针Rollptr,由于第一事务还未提交,事务提交标识字段可以为空值。
第一事务提交时,可以对第一生成器加锁,从第一生成器获取事务提交标识TCN,第一生成器可以按照递增原则生成TCN,之后可以释放锁。生成的TCN以及事Trx ID,填写至第一事务的存储空间中。
此外,在存储空间中还可以根据第一事务的实时执行状态,记录第一事务的事务状态信息。当然在存储空间还可以结合实际情况保存其它事务相关信息,本申请对此不进行具体限定。
数据记录A中的事务提交标识字段可以在第一事务提交时,填写生成的事务提交标识TCN,当然,也可以在查询该数据记录A时再进行填写,在下面会进行介绍。
其中,存储结构中实际应用中可以采用链表结构,存储结构中的存储空间支持复用,在一个存储空间被复用的情况下,其原记录数据可以转存至其它存储空间,并通过指针建立存储空间之间的链接关系。
第二事务启动时或者执行第一次查询操作时,对第二生成器加锁,基于该第二生成器最近生成的TCN,构建视图。
针对第二事务的当前查询操作,为了方便图示描述,假设请求查询的为数据记录A,需要说明的是,实际应用中第二事务可能对任意数据记录进行查询。从数据记录A的最新版本开始执行可见性判断操作:
对于某个版本,首先查找该版本中记录的Trx ID与第二事务的Trx ID是否相同,若相同,则表明第二事务请求查询的是自己更新的版本,该版本即为可见版本。
若该版本中记录的Trx ID与第二事务的Trx ID不同,或者未生成第二事务的TrxID;则查找该版本中是否记录了TCN,该版本记录的TCN为更新该数据记录的第三事务的TCN,该第三事务可能与第一事务相同也可能不同。若该版本记录了第三事务的TCN,则可以直接基于该版本记录的TCN与视图中的TCN进行比较,若视图中的TCN大于或等于该版本记录的TCN,则该版本即为可见版本,否则为不可见版本。
若该版本中未记录TCN,则可以根据该版本记录的TSA,从存储结构中查询对应的存储空间,可以首先查看该存储空间即可的Trx ID,与该版本中记录的Trx ID是否一致,若不一致,表明该存储空间已经被复用,可以通过指针查找该版本中记录的Trx ID对应的原记录数据,从原记录数据中获取第三事务的TCN以进行判断,并可以将第三事务的TCN回填至该版本的事务提交标识字段中,若仍然查找不到原纪录数据,由于存储结构也会按照清除条件进行清除,清除最早生成的事务提交标识对应的记录数据;因此,此时,还可以将最近清除的记录数据中的TCN作为第三事务的TCN,以与视图TCN进行比较,并回填至该版本的事务提交标识字段中。
若一致,可以首先查看该存储空间记录的事务状态信息,若为活跃状态,表明第三事务还未提交,此时该版本对第二事务是不可见,为不可见版本,若为提交状态,再查看存储空间中的第三事务的TCN,再将该第三事务的TCN与视图中的TCN进行比较,若视图中的TCN大于或等于该第三事务的TCN,则该版本即为可见版本,否则为不可见版本。此时,还可以将从存储空间获取的TCN回填至该版本的事务提交标识字段中。
当然,若该版本对应的查询操作为第二事务的第一次查询操作,还可以将从存储结构获取的TCN与该第三事务的Trx ID对应保存在内存中。从而之后的查询操作,若任意版本中未记录TCN,可以首先从内存中,基于该版本记录的Trx ID查找是否存在对应的TCN等,若存在则可以无需再从存储结构中获取,此时还可以将内存查找到的TCN回填至该版本的事务提交标识字段中。
对于可见版本,即可以终止查找,并对可见版本执行对应的查询操作以获得查询结果,对于不可见版本,可以基于版本记录的回滚段指针找到上一个版本继续进行可见性判断等直至查找获得可见版本。
在第二事务提交的情况下,即可以该第二事务产生的查询结果反馈给请求端等。
图5为本申请实施例提供的一种事务处理装置一个实施例的流程图,该装置可以包括:
申请模块501,用于在第一事务启动的情况下,从持久化存储介质申请第一事务对应的存储空间;
记录模块502,用于为第一事务更新的至少一个数据对象分别记录存储空间的存储地址;
生成模块503,用于在第一事务提交的情况下,生成第一事务的事务提交标识;
存储模块504,用于在存储空间存储事务提交标识;其中,存储空间用以查询第一事务的事务提交标识,第一事务的事务提交标识用以查找第二事务请求查询的目标数据对象的可见版本。
在一些实施例中,该生成模块还用于在第一事务启动的情况下,生成第一事务的事务标识;
该记录模块还用于为至少一个数据对象分别记录事务标识;其中,目标数据对象被第一事务更新的版本记录的事务标识用于在与第二事务的事务标识一致情况下,确定该版本为可见版本,否则基于该版本记录的存储地址,从存储空间查询第一事务的事务提交标识。
在一些实施例中,该记录模块还用于为至少一个数据对象中的至少部分数据对象,分别记录第一事务的事务提交标识;或者,在针对任一个数据对象的当前查找版本执行查询操作时,为数据对象的当前查找版本记录从存储空间查询获得的事务提交标识。
在一些实施例中,该申请模块可以具体用于在第一事务启动的情况下,从持久化存储介质配置的存储结构中申请第一事务对应的存储空间,获得存储空间的存储地址;
其中,存储结构支持复用,该装置还可以包括:
复用模块,用于在存储空间中存储事务标识,由事务标识及事务提交标识构成一条记录数据;在存储空间被复用的情况下,将存储空间存储的原记录数据进行转存,并建立存储空间与原纪录数据的链接关系;链接关系用于查找第一事务的事务标识对应的目标记录数据,以获得第一事务的事务提交标识。
在一些实施例中,该装置还可以包括:
清除模块,用于在存储结构满足清除条件时,将存储结构中最早生成的事务提交标识对应的记录数据清除;其中,最近清除的记录数据中的事务提交标识用于在从存储结构查询不到第一事务的事务提交标识时,作为第一事务的事务提交标识。
一些实施例中,存储模块还用于在所述存储空间中存储所述第一事务的事务状态信息;所述事务状态信息用于在针对所述目标数据对象查询所述存储空间时,若处于活跃状态,确定所述目标数据对象被所述第一事务更新的版本为不可见版本,若处于提交状态,基于所述存储空间存储的事务提交标识判断所述版本是否为可见版本。
图5所述的事务处理装置可以执行图2所示实施例所述的事务处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的事务处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图6为本申请实施例提供的一种事务处理装置又一个实施例的结构示意图,该装置可以包括:
构建模块601,用于基于最近生成的事务提交标识,构建第二事务的视图;
查找模块602,用于根据视图中的事务提交标识及目标数据对象版本链中不同版本分别记录的存储地址索引的事务提交标识,从版本链中查找第二事务的可见版本;
其中,存储地址对应持久化存储介质中的存储空间,存储空间对应一写事务,并在写事务启动时申请,事务提交标识在事务提交时生成并存储至存储空间。
在一些实施例中,该查找模块可以具体用于确定由目标数据对象的最新版本及回滚日志中存储的目标数据对象的历史版本构成的版本链;从版本链中的最新版本开始,针对任一个版本,执行如下可见性判断操作;可见性判断操作包括:
从该版本记录的存储地址索引的存储空间中,查询更新该版本的第三事务的存储的事务提交标识;
根据该视图中的事务提交标识,及该第三事务的事务提交标识,判断该版本是否为该第二事务的可见版本。
一些实施例中,目标数据对象的不同版本分别记录了事务标识;该查找模块从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的事务提交标识可以包括:在所述版本记录的事务标识与所述第二事务的事务标识一致时,确定所述版本为所述第二事务的可见版本,否则,从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的事务提交标识。
在一些实施例中,存储空间中还存储有事务标识,由存储空间中的事务标识与事务提交标识构成一条记录数据;存储空间被复用情况下,存储空间的原纪录数据进行转存,并建立存储空间与原记录数据的链接关系;
该查找模块从该版本记录的存储地址索引的存储空间中,查询更新该版本的第三事务的事务提交标识可以是在该版本记录的存储地址索引的存储空间存储的事务标识与该版本记录的事务标识一致时,将存储空间存储的事务提交标识作为更新该版本的第三事务的事务提交标识;在存储空间存储的事务标识与该版本记录的事务标识不一致时,根据不同存储空间的链接关系,查找第三事务对应的事务提交标识。
在一些实施例中,该存储结构在满足清除条件,清除最早生成的事务提交标识对应的记录数据;
该查找模块还用于若查找不到该第三事务的事务提交标识,将最近清除的记录数据中的事务提交标识作为该第三事务的事务提交标识。
在一些实施例中,该查找模块从该版本记录的存储地址索引的存储空间,查询更该版本的第三事务的事务提交标识包括:
根据该版本记录的第三事务的事务标识,从内存中查找是否保存了对应的事务提交标识;若是,将内存保存的事务提交标识,作为第三事务的事务提交标识;若否,从该版本记录的存储地址索引的存储空间,查询第三事务的事务提交标识,并对应第三事务的事务标识保存至内存中。
一些实施例中,查找模块在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识可以包括:在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,从所述存储空间中查询更新所述版本的第三事务的事务状态信息;若所述事务状态信息为提交状态,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识;若所述事务状态信息为活跃状态,确定所述版本为不可见版本。
图6所述的事务处理装置可以执行图3所示实施例所述的事务处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的事务处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图5所示实施例的事务处理装置以及图6所示实施例的事务处理装置可以部署在计算机系统中,如图7中所述,该计算机系统可以包括存储组件701以及处理组件702;
存储组件701存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件702调用执行,以实现如图2所示的事务处理方法或如图3所示实施例所述的事务处理方法;或者实现如图2所示实施例所述的事务处理方法以及如图3所示实施例所述的事务处理方法。
也即图2所示实施例所述的事务处理方法以及图3所示实施例所述的事务处理方法由同一个计算机系统执行。
实际应用中,该计算机系统可以实现为单个物理机器。当然,也可以实现为由多个物理机器组成的分布式集群是一个集群系统,存储组件以及处理组件分布在集群中。
该处理组件702可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
实际应用中,该处理组件702可以为由一个多核处理器构成,计算机系统为单个物理机器,形成单机多核架构,以运行事务系统,实现图2所示实施例所述的事务处理方法以及图3所示实施例所述的事务处理方法,在该单机多核架构下,可以充分利用硬件资源,减少内存使用,从而可以有效提高事务处理性能。
其中,存储组件701被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
存储组件701可以包括内存7011以及持久化存储介质7012,其中,数据库存储在持久化存储介质7012中,在持久化存储介质中配置有存储结构。该一个或多个计算机指令可以存储在内存7011或持久化存储介质7012。
当然,计算机系统必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
其中,该计算机系统可以为物理设备或者云计算平台提供的弹性计算主机等,此时计算设备即可以是指云服务器上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。
本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图7所示实施例的监控方法。
此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图2所示实施例的事务处理方法或图3所示实施例的事务处理方法或者上述图2所示实施例的事务处理方法以及图3所示实施例的事务处理方法。该计算机可读介质可以是上述实施例中描述的计算机系统设备中所包含的;也可以是单独存在,而未装配入该计算机系统中。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。
本申请实施例还提供了一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,所述计算机程序被计算机执行时可以实现如上述图2所示实施例的事务处理方法或图3所示实施例的事务处理方法或者上述图2所示实施例的事务处理方法以及图3所示实施例的事务处理方法。在这样的实施例中,计算机程序可以是从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被处理器执行时,执行本申请的系统中限定的各种功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种事务处理方法,其中,包括:
在第一事务启动的情况下,从持久化存储介质申请所述第一事务对应的存储空间;
为所述第一事务更新的至少一个数据对象分别记录所述存储空间的存储地址;
在所述第一事务提交的情况下,生成所述第一事务的事务提交标识;
在所述存储空间存储所述事务提交标识;其中,所述存储空间用以查询所述第一事务的事务提交标识,所述第一事务的事务提交标识用以查找第二事务请求查询的目标数据对象的可见版本。
2.根据权利要求1所述的方法,其中,还包括:
在所述第一事务启动的情况下,生成所述第一事务的事务标识;
为所述至少一个数据对象分别记录所述事务标识;其中,所述目标数据对象被所述第一事务更新的版本记录的事务标识用于在与所述第二事务的事务标识一致情况下,确定所述版本为可见版本,否则基于所述版本记录的存储地址,从所述存储空间查询所述第一事务的事务提交标识。
3.根据权利要求1所述的方法,其中,还包括:
为所述至少一个数据对象中的至少部分数据对象,分别记录所述第一事务的事务提交标识;或者,
在针对任一个数据对象的当前查找版本执行查询操作时,为所述数据对象的当前查找版本记录从所述存储空间查询获得的事务提交标识。
4.根据权利要求1所述的方法,其中,所述在第一事务启动的情况下,从持久化存储介质申请所述第一事务对应存储空间包括:
在所述第一事务启动的情况下,从持久化存储介质配置的存储结构中申请所述第一事务对应的存储空间,获得所述存储空间的存储地址;
其中,所述存储结构支持复用,所述方法还包括:
在所述存储空间中存储所述事务标识,由所述事务标识及所述事务提交标识构成一条记录数据;
在所述存储空间被复用的情况下,将所述存储空间存储的原记录数据进行转存,并建立所述存储空间与原纪录数据的链接关系;所述链接关系用于查找所述第一事务的事务标识对应的目标记录数据,以获得所述第一事务的事务提交标识。
5.根据权利要求4所述的方法,其中,还包括:
在所述存储结构满足清除条件时,将所述存储结构中最早生成的事务提交标识对应的记录数据清除;其中,最近清除的记录数据中的事务提交标识用于在从所述存储结构查询不到所述第一事务的事务提交标识时,作为所述第一事务的事务提交标识。
6.一种事务处理方法,其中,包括:
基于最近生成的事务提交标识,构建第二事务的视图;
根据所述视图中的事务提交标识及目标数据对象版本链中不同版本分别记录的存储地址索引的事务提交标识,从所述版本链中查找所述第二事务的可见版本;
其中,所述存储地址对应持久化存储介质中的存储空间,所述存储空间对应一写事务,并在所述写事务启动时申请,所述事务提交标识在事务提交时生成并存储至所述存储空间。
7.根据权利要求6所述的方法,其中,所述根据所述视图中的事务提交标识及目标数据对象版本链中不同版本分别记录的存储地址索引的事务提交标识,从所述版本链中查找所述第二事务的可见版本包括:
确定由目标数据对象的最新版本及回滚日志中存储的所述目标数据对象的历史版本构成的版本链;
从所述版本链中的最新版本开始,针对任一个版本,执行如下可见性判断操作;所述可见性判断操作包括:
从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的存储的事务提交标识;
根据所述视图中的事务提交标识,及所述第三事务的事务提交标识,判断所述版本是否为所述第二事务的可见版本。
8.根据权利要求7所述的方法,其中,所述目标数据对象的不同版本分别记录了事务标识;
所述从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的事务提交标识包括:
在所述版本记录的事务标识与所述第二事务的事务标识一致时,确定所述版本为所述第二事务的可见版本,否则,从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的事务提交标识。
9.根据权利要求7或8所述的方法,其中,所述存储空间中还存储有事务标识,由所述存储空间中的事务标识与事务提交标识构成一条记录数据;所述存储空间被复用情况下,所述存储空间的原记录数据进行转存,并建立所述存储空间与所述原记录数据的链接关系;
所述从所述版本记录的存储地址索引的存储空间中,查询更新所述版本的第三事务的事务提交标识包括:
在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识;
在所述存储空间存储的事务标识与所述版本记录的事务标识不一致时,根据所述存储空间的链接关系,查找所述第三事务对应的事务提交标识。
10.根据权利要求9所述的方法,其中,所述存储结构在满足清除条件,清除最早生成的事务提交标识对应的记录数据;所述方法还包括:
根据所述存储空间的链接关系,若查找不到所述第三事务的事务提交标识,将最近清除的记录数据中的事务提交标识作为所述第三事务的事务提交标识。
11.根据权利要求7或8所述的方法,其中,从所述版本记录的存储地址索引的存储空间,查询更所述版本的第三事务的事务提交标识包括:
根据所述版本记录的第三事务的事务标识,从内存中查找是否保存了对应的事务提交标识;
若是,将内存保存的事务提交标识,作为所述第三事务的事务提交标识;
若否,从所述版本记录的存储地址索引的存储空间,查询所述第三事务的事务提交标识,并对应所述第三事务的事务标识保存至内存中。
12.根据权利要求9所述的方法,其中,所述在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识包括:
在所述版本记录的存储地址索引的存储空间存储的事务标识与所述版本记录的事务标识一致时,从所述存储空间中查询更新所述版本的第三事务的事务状态信息;
若所述事务状态信息为提交状态,将所述存储空间存储的事务提交标识作为更新所述版本的第三事务的事务提交标识;
若所述事务状态信息为活跃状态,确定所述版本为不可见版本。
13.一种计算机系统,其中,包括处理组件以及存储组件;所述存储组件包括内存以及持久化存储介质;
所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,以实现如权利要求1~5任一项所述的事务处理方法,或者实现如权利要求6~12任一项所述的事务处理方法。
14.一种计算机存储介质,其中,存储有计算机程序,所述计算机程序被计算机执行时如权利要求1~5任一项所述的事务处理方法,或者实现如权利要求6~12任一项所述的事务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210262006.0A CN114691307A (zh) | 2022-03-16 | 2022-03-16 | 事务处理方法及计算机系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210262006.0A CN114691307A (zh) | 2022-03-16 | 2022-03-16 | 事务处理方法及计算机系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691307A true CN114691307A (zh) | 2022-07-01 |
Family
ID=82138533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210262006.0A Pending CN114691307A (zh) | 2022-03-16 | 2022-03-16 | 事务处理方法及计算机系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691307A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028504A (zh) * | 2023-02-20 | 2023-04-28 | 北京数元灵科技有限公司 | 一种数据湖元数据管理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150278281A1 (en) * | 2014-03-28 | 2015-10-01 | Futurewei Technologies, Inc. | Efficient Methods and Systems for Consistent Read in Record-Based Multi-Version Concurrency Control |
CN105512342A (zh) * | 2016-01-05 | 2016-04-20 | 上海交通大学 | 基于htm和nvram的内存事务性计算的持久性方法 |
CN111143389A (zh) * | 2019-12-27 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算机设备及存储介质 |
CN111475585A (zh) * | 2020-06-22 | 2020-07-31 | 阿里云计算有限公司 | 数据处理方法、装置和系统 |
CN113297320A (zh) * | 2020-07-24 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式数据库系统及数据处理方法 |
CN113505114A (zh) * | 2021-06-29 | 2021-10-15 | 清华大学 | 数据库的多版本并发控制方法及数据库系统 |
-
2022
- 2022-03-16 CN CN202210262006.0A patent/CN114691307A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150278281A1 (en) * | 2014-03-28 | 2015-10-01 | Futurewei Technologies, Inc. | Efficient Methods and Systems for Consistent Read in Record-Based Multi-Version Concurrency Control |
CN105512342A (zh) * | 2016-01-05 | 2016-04-20 | 上海交通大学 | 基于htm和nvram的内存事务性计算的持久性方法 |
CN111143389A (zh) * | 2019-12-27 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算机设备及存储介质 |
CN111475585A (zh) * | 2020-06-22 | 2020-07-31 | 阿里云计算有限公司 | 数据处理方法、装置和系统 |
CN113297320A (zh) * | 2020-07-24 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式数据库系统及数据处理方法 |
CN113505114A (zh) * | 2021-06-29 | 2021-10-15 | 清华大学 | 数据库的多版本并发控制方法及数据库系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028504A (zh) * | 2023-02-20 | 2023-04-28 | 北京数元灵科技有限公司 | 一种数据湖元数据管理方法及装置 |
CN116028504B (zh) * | 2023-02-20 | 2023-05-30 | 北京数元灵科技有限公司 | 一种数据湖元数据管理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11314716B2 (en) | Atomic processing of compound database transactions that modify a metadata entity | |
US10180946B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
US10754875B2 (en) | Copying data changes to a target database | |
CN108363806B (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
EP3117348B1 (en) | Systems and methods to optimize multi-version support in indexes | |
US11132350B2 (en) | Replicable differential store data structure | |
US9767131B2 (en) | Hierarchical tablespace space management | |
US11321299B2 (en) | Scalable conflict detection in transaction management | |
US9155320B2 (en) | Prefix-based leaf node storage for database system | |
US7376674B2 (en) | Storage of multiple pre-modification short duration copies of database information in short term memory | |
US20190129894A1 (en) | Database Transaction Processing Method, Client, and Server | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US11392567B2 (en) | Just-in-time multi-indexed tables in a shared log | |
US20210073209A1 (en) | Supporting blockchain collections in a database | |
US8832022B2 (en) | Transaction processing device, transaction processing method and transaction processing program | |
CN108376156B (zh) | 创建数据库索引的方法、装置、服务器及存储介质 | |
US12007971B2 (en) | Pageable hash index for document store | |
US20180004798A1 (en) | Read only bufferpool | |
JP2019102059A (ja) | 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc) | |
WO2022206398A1 (en) | Method and apparatus for reading data maintained in tree data structures | |
US7752399B2 (en) | Exclusion control method and information processing apparatus | |
CN114691307A (zh) | 事务处理方法及计算机系统 | |
US11138231B2 (en) | Method and system for data handling | |
WO2023124242A1 (zh) | 事务执行方法、装置、设备和存储介质 | |
CN116089359A (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 |