CN111159252A - 事务执行方法、装置、计算机设备及存储介质 - Google Patents
事务执行方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111159252A CN111159252A CN201911378490.8A CN201911378490A CN111159252A CN 111159252 A CN111159252 A CN 111159252A CN 201911378490 A CN201911378490 A CN 201911378490A CN 111159252 A CN111159252 A CN 111159252A
- Authority
- CN
- China
- Prior art keywords
- transaction
- range
- target transaction
- read
- node device
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种事务执行方法、装置、计算机设备及存储介质,属于数据库技术领域。本申请通过节点设备响应于协调节点设备对目标事务的冲突查询请求,查询该节点设备中是否存在该目标事务的冲突事务,得到查询结果信息,该冲突事务与该目标事务的操作对象包括同一数据项,向协调节点设备发送该查询结果信息,响应于该协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示该数据库系统中不存在该目标事务的冲突事务,使得并发控制算法无需依赖于分布式死锁,避免了由于分布式死锁而带来的性能损耗,提升了数据库系统的事务执行效率。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种事务执行方法、装置、计算机设备及存储介质。
背景技术
随着数据库技术的发展,为了能够适应大数据、云计算等业务场景,分布式数据库系统逐渐变得普及。在分布式数据库系统中,普遍采用基于封锁的并发控制算法来进行并发事务的执行与分析,但是分布式死锁会带来严重的性能损耗,导致基于封锁的并发控制算法降低了分布式数据库系统的事务执行效率,在分布式数据库系统中存在先天劣势。因此,亟需一种能够提升分布式数据库系统的事务执行效率的方法。
发明内容
本申请实施例提供了一种事务执行方法、装置、计算机设备及存储介质,能够提升数据库系统的事务执行效率。该技术方案如下:
一方面,提供了一种事务执行方法,应用于数据库系统中,所述数据库系统包括节点设备和协调节点设备,该方法包括:
所述节点设备响应于所述协调节点设备对目标事务的冲突查询请求,查询所述节点设备中是否存在所述目标事务的冲突事务,得到查询结果信息,所述冲突事务与所述目标事务的操作对象包括同一数据项;
所述节点设备向所述协调节点设备发送所述查询结果信息;
所述节点设备响应于所述协调节点设备在目标条件下发送的对所述目标事务的全局提交请求,对所述目标事务进行全局提交,所述目标条件用于表示所述数据库系统中不存在所述目标事务的冲突事务。
一方面,提供了一种事务执行方法,所述方法包括:
向至少一个节点设备发送目标事务的冲突查询请求,所述冲突查询请求用于请求查询所述至少一个节点设备上是否存在所述目标事务的冲突事务,所述冲突事务与所述目标事务的操作对象包括同一数据项;
接收至少一个节点设备对所述目标事务的查询结果信息;
若所述查询结果信息表示所述至少一个节点设备均不存在所述目标事务的冲突事务,向所述至少一个节点设备发送对所述目标事务的全局提交请求。
一方面,提供了一种事务执行装置,应用于数据库系统中,所述数据库系统还包括协调节点设备,该装置包括:
查询模块,用于响应于所述协调节点设备对目标事务的冲突查询请求,查询是否存在所述目标事务的冲突事务,得到查询结果信息,所述冲突事务与所述目标事务的操作对象包括同一数据项;
发送模块,用于向所述协调节点设备发送所述查询结果信息;
全局提交模块,用于响应于所述协调节点设备在目标条件下发送的对所述目标事务的全局提交请求,对所述目标事务进行全局提交,所述目标条件用于表示所述数据库系统中不存在所述目标事务的冲突事务。
在一种可能实施方式中,所述查询模块包括:
获取单元,用于获取活跃事务集合和目标事务的查询序列号,所述活跃事务集合为当前处于活跃状态且未提交的事务集合;
第一确定单元,用于从所述活跃事务集合中确定在所述目标事务的开始序列号到所述查询序列号所对应的时间段内开始执行的至少一个活跃事务;
检测单元,用于检测所述目标事务的读集是否与所述至少一个活跃事务的写集存在交集,所述读集为所述目标事务读取的数据项或数据项范围的集合,所述写集为所述至少一个活跃事务写入的数据项或数据项范围的集合;
第二确定单元,用于若所述读集与所述写集存在交集,将所述查询结果信息确定为存在所述目标事务的冲突事务,若所述读集与所述写集不存在交集,将所述查询结果信息确定为不存在所述目标事务的冲突事务。
在一种可能实施方式中,若所述数据库系统基于磁盘存储,所述检测单元用于:
对于所述读集中任一第一数据项范围以及所述写集中任一第二数据项范围,若所述第一数据项范围的上界大于或等于所述第二数据项范围的下界,或者所述第一数据项范围的下界小于或等于所述第二数据项范围的上界,确定所述第一数据项范围与所述第二数据项范围存在交集,否则,确定所述第一数据项范围与所述第二数据项范围不存在交集;
若所述读集中各个第一数据项范围与所述写集中各个第二数据项范围均不存在交集,确定所述读集与所述写集不存在交集,否则,确定所述读集与所述写集存在交集。
在一种可能实施方式中,若所述数据库系统基于键值对存储,所述检测单元用于:
对于所述读集中任一第一数据项范围以及所述写集中任一第二数据项范围,若所述第一数据项范围的上界小于所述第二数据项范围的下界,或者所述第一数据项范围的下界大于所述第二数据项范围的上界,确定所述第一数据项范围与所述第二数据项范围不存在交集;否则,对所述第一数据项范围与所述第二数据项范围进行按位与操作,若各个位均输出为0,确定所述第一数据项范围与所述第二数据项范围不存在交集,若存在至少一位输出为1,确定所述第一数据项范围与所述第二数据项范围存在交集;
若所述读集中各个第一数据项范围与所述写集中各个第二数据项范围均不存在交集,确定所述读集与所述写集不存在交集,否则,确定所述读集与所述写集存在交集。
在一种可能实施方式中,所述装置还包括:
创建模块,用于创建所述目标事务的读写集合,所述读写集合包括读集或者写集中至少一项;
存入模块,用于若所述目标事务所对应的数据项不满足聚集条件,将所述目标事务对应的数据项存入所述读写集合,若所述目标事务所对应的数据项满足聚集条件,将所述目标事务对应的数据项的数据项范围存入所述读写集合。
在一种可能实施方式中,若所述数据库系统基于磁盘存储,所述聚集条件为所述目标事务所对应的数据项数量大于目标阈值;
所述存入模块包括:
第三确定单元,用于确定所述目标事务对应的数据项所在的页面范围;
页面分簇单元,用于基于第一模糊系数对所述页面范围进行分簇,得到多个页面簇;
存入单元,用于将所述多个页面簇的主键范围确定为所述目标事务对应的数据项的数据项范围,将所述数据项范围存入所述读写集合。
在一种可能实施方式中,所述页面分簇单元用于:
在所述页面范围中按照页面从小到大的顺序,将每第一模糊系数个页面确定为一个页面簇,最后一个页面簇的页面数量小于或等于所述第一模糊系数。
在一种可能实施方式中,所述装置还用于:
对至少一个事务的执行过程进行多次采样,确定不同的第一模糊系数所对应的准确率,将准确率最高的第一模糊系数确定为下一次事务执行时采用的第一模糊系数,所述准确率用于表示基于不同的第一模糊系数进行采样时准确识别冲突事务的概率。
在一种可能实施方式中,若所述数据库系统基于键值对存储,所述聚集条件为所述目标事务所对应的数据项的相邻键之间差值小于或等于第二模糊系数;
所述存入模块包括:
合并存入单元,用于基于所述第二模糊系数对所述目标事务对应的数据项的相邻键进行合并,得到至少一个键范围,将所述至少一个键范围确定为所述目标事务对应的数据项的数据项范围,将所述数据项范围存入所述读写集合。
在一种可能实施方式中,所述合并存入单元用于:
对任一个键,若所述键与相邻键之间的差值小于或等于所述第二模糊系数,将所述键与相邻键合并为一个键范围,否则,不对所述键与相邻键进行合并。
在一种可能实施方式中,所述装置还用于:
对至少一个事务的执行过程进行多次采样,确定不同的第二模糊系数所对应的准确率,将准确率最高的第二模糊系数确定为下一次事务执行时采用的第二模糊系数,所述准确率用于表示基于不同的第二模糊系数进行采样时准确识别冲突事务的概率。
一方面,提供了一种事务执行装置,所述装置包括:
发送模块,用于向至少一个节点设备发送目标事务的冲突查询请求,所述冲突查询请求用于请求查询所述至少一个节点设备上是否存在所述目标事务的冲突事务,所述冲突事务与所述目标事务的操作对象包括同一数据项;
接收模块,用于接收至少一个节点设备对所述目标事务的查询结果信息;
所述发送模块,还用于若所述查询结果信息表示所述至少一个节点设备均不存在所述目标事务的冲突事务,向所述至少一个节点设备发送对所述目标事务的全局提交请求。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的事务执行方法所执行的操作。
一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的事务执行方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过节点设备响应于协调节点设备对目标事务的冲突查询请求,查询该节点设备中是否存在该目标事务的冲突事务,得到查询结果信息,该冲突事务与该目标事务的操作对象包括同一数据项,该节点设备向该协调节点设备发送该查询结果信息,该节点设备响应于该协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示该数据库系统中不存在该目标事务的冲突事务,通过在目标事务执行之后、提交之前引入冲突查询阶段,检测节点设备中是否存在冲突事务,使得并发控制算法无需依赖于分布式死锁,避免了由于分布式死锁而带来的性能损耗,提升了数据库系统的事务执行效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种事务执行方法的实施环境示意图;
图2是本申请实施例提供的一种事务执行方法的交互流程图;
图3是本申请实施例提供的一种读写集合的数据结构示意图;
图4是本申请实施例提供的一种直方图模型的原理示意图;
图5是本申请实施例提供的一种读写集合的数据结构示意图;
图6是本申请实施例提供的一种分布式OCC并发控制方法的流程图;
图7是本申请实施例提供的一种集中式冲突查询算法的流程图;
图8是本申请实施例提供的一种事务执行装置的结构示意图;
图9是本申请实施例提供的一种事务执行装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。
本申请中术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上,例如,多个第一位置是指两个或两个以上的第一位置。
在介绍本申请实施例之前,需要引入一些数据库技术中的基本概念:
本申请实施例涉及的数据库系统中可以包括节点设备和协调节点设备,节点设备或协调节点设备的数据库中可以存储有多个数据表,每个数据表可以用于存储一个或多个数据项(也称为元组)。其中,节点设备或协调节点设备的数据库可以为任一类型的分布式数据库,可以包括关系型数据库或者非关系型数据库中至少一项,例如SQL(StructuredQuery Language,结构化查询语言)数据库、NoSQL(Non-relational SQL,泛指非关系型数据库)、NewSQL(泛指各种新式的可拓展/高性能数据库)等,在本申请实施例中对数据库的类型不作具体限定。
图1是本申请实施例提供的一种事务执行方法的实施环境示意图。参见图1,本实施例可以应用于分布式数据库系统,该系统中可以包括网关服务器101、全局序列号生成集群102、分布式存储集群103以及分布式协调系统104(例如ZooKeeper),在分布式存储集群103中可以包括节点设备和协调节点设备。
其中,网关服务器101用于接收外部的读写请求,并将读写请求对应的读写事务分发至分布式存储集群103,比如,用户在登录终端上的应用客户端之后,触发应用客户端生成读写请求,调用分布式数据库系统提供的API(Application Programming Interface,应用程序编程接口)将该读写请求发送至网关服务器101,比如,该API可以是MySQL API(一种关系型数据库系统提供的API)。
在一些实施例中,该网关服务器101可以与分布式存储集群103中的任一个节点设备或任一协调节点设备合并在同一个物理机上,也即是,让某个节点设备或协调节点设备充当网关服务器101。
全局序列号生成集群102用于生成全局事务的全局序列号,该全局事务可以是指涉及到多个节点设备的事务,例如全局读事务可以涉及到对多个节点设备上存储数据的读取,又例如,全局写事务可以涉及到对多个节点设备上的数据写入。采用使用集群的形式来实现该全局序列号的生成,可以防止单点故障。
可选地,全局序列号是一个在分布式数据库系统中全局唯一且单调递增的标识信息,全局序列号可以包括开始序列号(start_tn)、查询序列号(mid_tn)或者提交序列号(commit_tn)中至少一项,开始序列号用于表示事务的创建时序,查询序列号用于表示事务进行冲突查询的时序,提交序列号用于表示事务的提交时序,全局序列号可以采用物理时钟、逻辑时钟或者混合物理时钟中至少一项。全局序列号能够标识出每个事务开始/提交的顺序,以此可以反映出事务的全序关系。
在一个示例性场景中,全局序列号可以采用混合物理时钟的方式生成,全局序列号由八字节组成,其中,前44位可以为物理时间戳的取值(也即Unix时间戳,精确到毫秒),这样共计可以表示244个无符号整数,因此理论上一共可以表示约为557.8年的物理时间戳,其中,后20位可以为在某一毫秒内的单调递增计数,这样每毫秒有220-1个(约100万个)计数,基于上述数据结构,如果单机(任一节点设备)的事务吞吐量为10w/s,理论上可以支持包含1万个节点设备的分布式存储集群103,同时,序列号的数量代表了系统理论上所能支持的总事务数,基于上述数据结构,理论上系统可以支持(244-1)*220个事务。
在一些实施例中,该全局序列号生成集群102可以是物理独立的,也可以和分布式协调系统104(例如ZooKeeper)合并到一起。
其中,分布式存储集群103可以包括节点设备和协调节点设备,每个协调节点设备可以对应于至少一个节点设备,节点设备与协调节点设备的划分是针对不同事务而言的,以某一全局事务为例,全局事务的发起节点可以称为协调节点设备,全局事务所涉及的其他节点设备称为至少一个节点设备,节点设备或协调节点设备的数量可以是一个或多个,本申请实施例不对分布式存储集群103中节点设备或协调节点设备的数量进行具体限定。由于本实施例所提供的分布式数据库系统中缺乏全局事务管理器,因此在该系统中可以采用XA(eXtended Architecture,X/Open组织分布式事务规范)/2PC(Two-Phase Commit,二阶段提交)技术来支持跨节点的事务(全局事务),保证跨节点写操作时数据的原子性和一致性,此时,协调节点设备用于充当2PC算法中的协调者,而该协调节点设备所对应的各个节点设备用于充当2PC算法中的参与者。
可选地,每个节点设备或协调节点设备可以是单机设备,也可以采用主备结构(也即是为一主多备集群),如图1所示,以节点设备为一主两备集群为例进行示意,每个节点设备中包括一个主机和两个备机,可选地,每个主机或备机都对应配置有代理(agent)设备,代理设备可以与主机或备机是物理独立的,当然,代理设备还可以作为主机或备机上的一个代理模块,以节点设备1为例,节点设备1包括一个主数据库及代理设备(主database+agent,简称主DB+agent),此外还包括两备数据库及代理设备(备database+agent,简称备DB+agent)。
在一个示例性场景中,每个节点设备或协调节点设备所对应的主机或备机的数据库实例集合称为一个SET(集合),例如,假设某一节点设备为单机设备,那么该节点设备的SET仅为该单机设备的数据库实例,假设某一节点设备为一主两备集群,那么该节点设备的SET为主机数据库实例以及两个备机数据库实例的集合,此时可以基于云数据库的强同步技术来保证主机的数据与备机的副本数据之间的一致性,可选地,每个SET可以进行线性扩容,以应付大数据场景下的业务处理需求,在一些金融业务场景下,全局事务通常是指跨SET的转账。
分布式协调系统104可以用于对网关服务器101、全局序列号生成集群102或者分布式存储集群103中至少一项进行管理,可选地,技术人员可以通过终端上的调度器(scheduler)访问该分布式协调系统104,从而基于前端的调度器来控制后端的分布式协调系统104,实现对各个集群或服务器的管理。例如,技术人员可以通过调度器来控制ZooKeeper将某一个节点设备从分布式存储集群103中删除,也即是使得某一个节点设备失效。
上述图1仅是提供了一种轻量级的全局事务处理的架构图,是一种类分布式数据库系统。整个分布式数据库系统可以看作是共同维护一个逻辑上的大表,这个大表中存储的数据通过主键被打散到分布式存储集群103中的各个节点设备中,每个节点设备上存储的数据是独立于其他节点设备的,从而实现了节点设备对逻辑大表的水平切分。由于在上述系统中能够将各个数据库中各个数据表水平切分后进行分布式地存储,因此,这种系统也可以形象地称为具有“分库分表”的架构。
在上述分布式数据库系统中,已经基于XA/2PC算法实现了写操作时数据的原子性和一致性,而读操作的数据一致性问题,需要通过构造一个轻量的、去中心化的分布式事务处理机制来改善,从技术的角度来看,分布分表架构缺乏一个全局事务管理器,也就缺乏分布式事务处理能力,通过构造上述轻量的、去中心化的分布式事务处理机制,能够为分布式数据库系统提供水平扩展等能力,并且保证分布式数据库系统简单易推广、事务处理效率更高,必将对传统并发控制方式所设计的分布式数据库架构产生极大冲击,具体的分布式事务处理机制将在下个实施例中进行详述。
本申请实施例可以应用于上述实施环境中的分布式数据库系统,通过在事务执行流程中加入冲突查询阶段(也称为验证阶段),可以保证分布式数据库系统中较为严格的可串行化隔离级别,且不影响原有隔离级别的正常使用,较大程度的防止数据异常的发生。
图2是本申请实施例提供的一种事务执行方法的交互流程图。参见图2,该实施例应用于数据库系统,该数据库系统包括节点设备和协调节点设备,具体可以包括下述步骤:
200、协调节点设备对目标事务执行初始化操作,向目标事务所涉及的至少一个节点设备发送执行请求。
其中,目标事务可以是全局事务,也可以是局部事务,本申请实施例以目标事务为全局事务为例进行说明。
在本申请实施例中,仅以协调节点设备(coordinator)为目标事务的发起节点、至少一个节点设备(participants,或cohort)为目标事务所涉及的节点设备(也称为参与节点设备)为例进行说明,可选地,除了目标事务的发起节点之外,协调节点设备也可以是上述实施环境中的网关服务器,还可以是分布式存储集群中的任一个节点设备,该至少一个节点设备可以是目标事务或者冲突事务中至少一项所涉及的节点设备,还可以是分布式存储集群中的所有节点设备,本申请实施例不对协调节点设备与至少一个节点设备的数量和类型进行具体限定。
需要说明的是,当协调节点设备为目标事务的发起节点时,由于不同的目标事务通常具有不同的发起节点,因此对不同的目标事务而言协调节点设备或者至少一个节点设备并非是固定不变的,也即是说,同一节点设备有可能对一些目标事务而言属于协调节点设备,对另一些目标事务而言属于至少一个节点设备中的一个节点设备。
本申请实施例所涉及的数据库系统,可以是上述实施环境中提到的分布式数据库系统,还可以是其他的关系型或者非关系型的数据库系统,本申请实施例不对数据库系统的类型进行具体限定。
在上述步骤200中,当目标事务开始执行时,协调节点设备可以执行下述三项中至少一项初始化操作:
一、创建目标事务的读写集合
在上述过程中,协调节点设备在数据库系统启动时,可以向操作系统申请一块内存空间,该内存空间用于进行至少一个事务的读写集合的维护,当目标事务开始执行时,协调节点设备从该内存空间中申请一块内存,该内存用于管理该目标事务的读写集合,此时能够在协调节点设备上创建了目标事务的读写集合,此外,在下述步骤201中在至少一个节点设备上创建了目标事务的读写集合。
在本申请实施例中,将对目标事务的分布式冲突查询算法进行详细介绍,在这种情况下,协调节点设备负责汇总至少一个节点设备的查询结果信息,此时可以仅在至少一个节点设备上维护目标事务的读写集合;在一些实施例中,还可以对目标事务采用集中式冲突查询算法,此时可以仅在协调节点设备上维护目标事务的读写集合;在一些实施例中,还可以采用自适应冲突查询算法,在自适应冲突查询算法中基于代价模型动态地调整何时采用分布式冲突查询算法,何时采用集中式冲突查询算法,因此需要在协调节点设备和至少一个节点设备上同时维护目标事务的读写集合,集中式冲突查询算法和自适应冲突查询算法将在下个实施例中进行详述,这里不做赘述。
二、申请目标事务的开始序列号
在上述过程中,协调节点设备还可以在目标事务开始执行时,向全局序列号生成集群发送第一获取请求,该第一获取请求用于获取目标事务的开始序列号,全局序列号生成集群响应于该第一获取请求,为目标事务分配一个开始序列号,向协调节点设备发送该目标事务的开始序列号,协调节点设备接收目标事务的开始序列号,将该开始序列号作为该目标事务的全局事务标识(start_tn,也即是全局唯一的事务号)。
可选地,start_tn可以采用物理时钟、逻辑时钟或者混合物理时钟中任一项方式生成,例如,start_tn的数据结构可以如上述实施环境中所介绍的由八字节组成,前44位为物理时间戳值,后20位为在某一毫秒内的单调递增计数,这里不做赘述。
三、本地事务的初始化工作
由于目标事务可能涉及到跨节点的读写操作,协调节点设备向至少一个节点设备发送执行请求之后,当目标事务第一次操作任一个节点设备时,需要在协调节点设备上进行本地事务的初始化工作:首先,节点设备会在本地的内存空间中申请一块内存,在该内存中创建目标事务的读写集合,然后,协调节点设备从该节点设备上获取目标事务的本地事务标识,将目标事务的全局事务标识与本地事务标识进行关联,存入到哈希表中。
在上述过程中,协调节点设备在完成初始化操作之后,能够在内存中维护目标事务的读写集合,相当于维护了全局事务上下文,协调节点设备向至少一个节点设备发送执行请求,使得数据库系统能够执行目标事务的事务逻辑中包含的读写操作。
201、至少一个节点设备创建目标事务的读写集合,响应于该执行请求,执行该目标事务,该读写集合包括读集或者写集中至少一项。
在上述过程中,对至少一个节点设备中任一节点设备,该节点设备可以在数据库系统启动时,向操作系统申请一块内存空间,该内存空间用于进行至少一个事务的读写集合的维护,当接收到目标事务的执行请求时,节点设备从该内存空间中申请一块内存,该内存用于管理该目标事务的读写集合,从而能够在节点设备上维护本地事务的上下文信息。进一步地,节点设备为目标事务分配本地事务标识,将该本地事务标识同步至协调节点设备,使得协调节点设备能够在哈希表中关联目标事务的全局事务标识和本地事务标识,上述过程相当于节点设备对目标事务的初始化操作。
在初始化操作完成后,该节点设备响应于目标事务的执行请求,执行目标事务的事务逻辑中包含的读写操作,可选地,若事务逻辑包括查询操作,节点设备可以将目标事务所涉及读取的数据项或数据项范围存入到目标事务的读集中,可选地,若事务逻辑包括更新或删除操作,节点设备可以将目标事务所涉及更新或删除的数据项或数据项范围存入到目标事务的写集中,具体存储过程将在下述步骤202中进行详述。
202、若该目标事务所对应的数据项不满足聚集条件,至少一个节点设备将该目标事务对应的数据项存入该读写集合,若该目标事务所对应的数据项满足聚集条件,至少一个节点设备将该目标事务对应的数据项的数据项范围存入该读写集合。
其中,该聚集条件用于表示目标事务对应的数据项的连续度达到连续度阈值。
对至少一个节点设备中任一节点设备而言,目前主流数据库包括两种常用的存储策略,分别为传统的磁盘型存储(段页式)以及较新型的键值(key-value)式,下面将针对两种不同的存储策略,分别介绍读写集合的可能维护方式:
一、基于磁盘存储的数据库系统
磁盘型存储的数据库也称为段页式存储的数据库,这类数据库中的数据项是通过基于磁盘的文件系统(disk-based file systems)存储在磁盘上的,在这类数据库中可以包括不同的表空间(tablespace),在每个表空间中可以包括至少一个数据表(table),在每个数据表中可以包括至少一个数据段(segment),在每个数据段中可以包括至少一个数据区间(extent),在每个数据区间中可以包括至少一个数据块(block),在每个数据块中可以包括至少一个数据页(page),在每个数据页中可以包括至少一个数据项。上述数据表、数据段、数据区间、数据块以及数据页仅为对表空间中所存储的数据项在逻辑上进行划分的结果,在物理上数据项是存储载体是数据文件(files)。
上述磁盘型存储的数据库中,数据项是通过页面的方式进行维护的,每次内存与磁盘的交互单位通常为一个数据页,此时目标事务的读写集合的数据结构可以如图3所示,请参考图3,每个目标事务会在内存中申请一块空间用于存放自身的读写集合300,在读写集合300中包括读集301和写集302,在任一个读集301或写集302所在的内存空间中,可以包括一个页眉(Header)结构和多个数据页(Page1,Page2…PageN,其中N≥1),该页眉结构用于存放目标事务读或写的数据项范围,该多个数据页用于存放目标事务读或写的数据项,如图3,在读集301的Header结构中存放Page1~2或者PageN等数据项范围,在读集的Page1中存放了Tuple1,Tuple2,Tuple3等元组(也即数据项)。
在一些实施例中,对磁盘型存储的数据库而言,聚集条件可以是目标事务所对应的数据项数量大于目标阈值,其中,该目标阈值可以为任一大于或等于0的数值。
在本申请实施例中,提供一种适用于磁盘型存储的数据库系统的页面聚集策略,能够在目标事务所涉及的数据项数量小于或等于目标阈值的时候,将目标事务所涉及的数据项直接存入到读写集合的数据页中,在目标事务所涉及的数据项数量大于目标阈值的时候,将目标事务对应的数据项的数据项范围存入到读写集合的页眉结构中,从而能够将大量的数据项聚集为一个数据项范围,缩小读写集合的占用空间,提高并发事务冲突查询的效率。
以目标阈值为一个数据页为例进行说明,如果在目标事务的某次操作中仅对某一个(或某几个)数据项进行了读取或写入,但不超过一个数据页的大小,则直接将所涉及的数据项存入读写集合的数据页中,如果在目标事务的某次操作中对超过一个数据页的连续数据项进行了读取或写入,则调用页面聚集算法,将算法所输出的数据项范围记录到读写集合的页眉结构中。例如,超过一个数据页的连续数据项(也即是多个数据页)有可能会按照规则分成若干数据区间(也即是至少一个页面簇),比如连续8个地址连续的page称为一个extent,这些extent的主键范围会被记录在header结构中。
以任一节点设备为例,页面聚集算法的输入为某次操作涉及的所有数据页,输出为数据项范围,可以包括如下流程:
2021A、节点设备获取数据库系统预先设定的第一模糊系数。
其中,第一模糊系数代表某一数据项范围内所聚集的数据页个数阈值,第一模糊系数用于调整页面聚集的粒度。
2021B、节点设备确定该目标事务对应的数据项所在的页面范围。
节点设备可以基于目标事务的执行请求,确定目标事务所对应的数据项,从而查找该数据项所在的页面范围。
2021C、节点设备基于第一模糊系数对该页面范围进行分簇,得到多个页面簇。
可选地,节点设备可以在该页面范围中按照页面从小到大的顺序,将每第一模糊系数个页面确定为一个页面簇,最后一个页面簇的页面数量小于或等于该第一模糊系数。
在上述过程中,相当于将页面范围划分为多个页面簇,并且除了最后一个页面簇之外页面簇的页面数量等于第一模糊系数,最后一个页面簇的页面数量小于或等于第一模糊系数。
2021D、节点设备将该多个页面簇的主键范围确定为该目标事务对应的数据项的数据项范围,将该数据项范围存入该读写集合。
在节点设备中,数据表内的数据项通常会按照主键聚簇存放,且一般为升序,因此相邻数据页的主键值是相接近的,因此节点设备可以通过使用各个页面簇所对应的主键范围作为数据项范围,以此来表示聚集后的各个页面簇。
例如,用B1表示第一模糊系数,假设目标事务的某次查询操作需要获取M(M≥0)个数据页,那么节点设备获取第1个页面的主键最小值min和第B1个页面的主键最大值max,组成第1个主键范围[min,max],以此类推,获取第B1+1个页面和第2B1个页面之间的第2个主键范围……直到主键范围覆盖到第M个页面为止。因此,总共可以形成M/B1(向上取整)个主键范围,将上述主键范围作为数据项范围记录到读集的页面结构中。
在一些实施例中,如果在执行目标事务的查询、更新或者删除中至少一项操作时,目标事务的SQL语句中直接指定了主键范围,那么节点设备可以直接将SQL语句中指定的主键范围记录到读写集合的页面结构中,从而无需执行上述页面聚集算法的各个流程,能够优化事务执行的处理逻辑。
在上述过程中,节点设备通过对页面范围进行分簇,并确定各个页面簇的主键范围,从而经过页面聚集算法的数据页本身并不会被记录到读写集合中,而仅仅会在页面结构中记录一个或多个主键范围,从而能够减少对读写集合的空间占用,提升数据库系统对并发事务冲突查询的效率。举例来说,由于一个page中可能会存放很多个tuple(元组,也就数据项),而多个page被页面聚集算法聚集之后,这些page中存放的tuple也就无需存放到读写集合中,从而对维护读写集合的空间大小的减少是非常可观的。
在一些实施例中,节点设备可以采用数据库系统预先设定的第一模糊系数来执行页面聚集算法,此时第一模糊系数可以是固定不变的,也可以随时由技术人员在设置中进行更改,从而技术人员可以通过调整第一模糊系数来控制页面聚集的粒度。
基于上述情况,虽然能够大大降低维护读写集合的开销,然而由于使用了主键范围来代表页面簇,被读写的数据项在被聚集之后,算法所输出的主键范围会对实际操作的数据对象范围造成不同程度的放大,页面聚集算法在本质上是一种模糊匹配的方式,因此会造成一定程度的误判情况,比如某次目标事务的查询范围为100~200以及300~400,此时可能页面聚集算法会聚集为100~400,因此,有可能会将原本不存在冲突的事务误判为目标事务的冲突事务,由于存在冲突事务时,系统会回滚目标事务,从而造成多余回滚现象的发生。
由于页面聚集的粒度是基于第一模糊系数来控制的,理论上第一模糊系数取值越大时,冲突误判的几率则会越高,但是冲突判断的效率也会越高,因此,在另一些实施例中,节点设备还可以通过下述步骤2021E,在并发事务的执行流程中动态地调整第一模糊系数的取值,能够更好地提升系统冲突查询的准确率,兼顾冲突查询的效率和准确率。
2021E、节点设备对至少一个事务的执行过程进行多次采样,确定不同的第一模糊系数所对应的准确率,将准确率最高的第一模糊系数确定为下一次事务执行时采用的第一模糊系数,该准确率用于表示基于不同的第一模糊系数进行采样时准确识别冲突事务的概率。
在一些实施例中,节点设备在进行多次采样之后,可以基于直方图技术对冲突的并发事务进行建模,构建事务冲突反馈算法(一种动态调整第一模糊系数的反馈机制),识别出多次采样中出现的冲突误判情况,通过更新第一模糊系数,减少冲突误判率,提升冲突判断准确率,从而提高事务处理的效率,反馈机制可以包括下述过程:
1)构建直方图模型
可选地,节点设备可以以第一模糊系数作为横坐标,以冲突查询的准确率作为纵坐标,构建直方图模型,在任一个第一模糊系数的情况下,准确率的计算方法为:准确率=准确识别次数/总采样次数。请参考图4,示出了第一模糊系数为1~9的情况下各自对应的准确率所对应的直方图400,比如,以第一模糊系数为1为例,可以从直方图400中看出对应的准确率目前为90%,代表在总共n(n>0)个采样事务中,目前有0.9*n个事务的基于模糊范围的查询结果信息与基于数据项的查询结果信息相同。
其中,如何基于模糊范围的冲突查询算法获取查询结果信息将在下述步骤203-208中进行详述,而如何基于数据项的冲突查询算法获取查询结果信息,则是指节点设备将各个采样事务所操作的数据项一一存入到读写集合中,从而一一判断是否存在操作对象包括相同数据项的冲突事务,因此,对于采样事务而言,执行页面聚集算法之后,节点设备不会清理掉被聚集的数据页内包括的数据项,而是保留这些数据项以便于执行基于数据项的冲突查询算法。
2)采样方法
节点设备可以通过随机数的方式确定采样间隔(假设用I表示,I>0),采样间隔表示每执行I个事务后,执行一次采样流程,这种随机采样的方式能够增加采样过程的随机性,降低因采样间隔固定而导致的系统误差。在一些实施例中,除了随机数之外,节点设备还可以预先设定一个固定值作为采样间隔,从而能够周期性地执行采样流程。
在采样过程中,首先,全局记录下采样开始时刻对应的事务号(也即是节点设备向全局序列号生成集群获取采样开始时刻对应的全局事务标识),在采样开始时刻之后执行的事务均标记为采样事务,采样事务需要在执行的过程中完整的保留读写集合的信息,也即采样事务在执行过程中将所涉及读取或写入的数据项全部存入到读写集合中,并且在执行页面聚集算法之后,被聚集的数据页的数据项仍然保留在读写集合中,并不会被清理掉。
其次,采样事务在冲突查询阶段,同时执行基于数据项的冲突查询算法以及基于模糊范围的冲突查询算法,根据两种不同冲突查询算法输出的查询结果信息,更新不同第一模糊系数下的准确率。
可选地,若两种冲突查询算法输出的查询结果信息一致,包括两种冲突查询算法均判断得到不存在冲突事务,或者两种冲突查询算法均判断得到存在冲突事务,此时将采样过程对应的第一模糊系数的准确率更新为:(已有的准确识别次数+1)/(已有的总采样次数+1)。反之,若两种冲突查询算法输出的查询结果信息不一致,即某一冲突查询算法判断得到存在冲突事务,另一冲突查询算法判断得到不存在冲突事务,此时将采样过程对应的第一模糊系数的准确率更新为:(已有的准确识别次数)/(已有的总采样次数+1)。
比如,在某次采样过程中,数据库系统采用的第一模糊系数为1,已有的准确率为m/n(m≥0;n>0),对当前时刻采样事务,若两种冲突查询算法输出的查询结果信息一致,将第一模糊系数为1时的准确率更新为(m+1)/(n+1),若两种冲突查询算法输出的查询结果信息不一致,将第一模糊系数为1时的准确率更新为m/(n+1)。
需要说明的是,在采样刚刚开始时,可能会存在一些采样事务无法获取到并发事务的完整的读写集合信息,比如,一些并发事务可能是在采样开始时刻之前已经开始执行的,这些并发事务是基于模糊范围进行冲突查询的,并没有维护完整的读写集合信息,那么对于这些并发事务,节点设备无需进行基于数据项的冲突查询算法,仅进行基于模糊范围的冲突查询算法即可,从而确定这些并发事务是进行全局提交还是进行全局回滚。
3)采样停止条件
可选地,节点设备可以设置一个采样时间阈值,当距离采样开始时刻到达采样时间阈值时,停止采样操作,然后直到执行了采样间隔个事务之后,重新启动下一轮的采样流程,该采样时间间隔可以是任一大于或等于0的数值,本申请实施例不对采样时间间隔的取值进行具体限定。
可选地,节点设备还可以设置一个采样数量阈值,当每次采样流程中采样事务的个数达到采样数量阈值时,停止采样操作,然后直到执行了采样间隔个事务之后,重新启动下一轮的采样流程,该采样数量阈值可以是任一大于或等于0的数值,本申请实施例不对采样数量阈值的取值进行具体限定。
在每一轮采样流程结束之后,能够对直方图模型中任一第一模糊系数的准确率进行更新,节点设备获取直方图中准确率最高的第一模糊系数确定为下一次事务执行时采用的第一模糊系数,也即是说,将原本的第一模糊系数更改为上述准确率最高的第一模糊系数,后续直到下一次采样流程结束之前,均基于更新后的第一模糊系数执行页面聚集算法。
在上述过程中,由于事务所包含的操作通常会随着业务的实际情况而发生变化,某段时间内被读写的数据项也是不可预测的,因此若第一模糊系数恒定不变将难以适应复杂多样的业务需求,而通过上述采样方式,根据事务逻辑来动态调整第一模糊系数,能够动态调整页面聚集算法的模糊精度,能够减少冲突查询的误判率,提升冲突查询的准确率。
二、基于键值对存储的数据库系统
在基于键值对(key-value)存储的数据库中,数据项按照键进行有序存放,与磁盘型存储的数据库不同,此时每次内存与磁盘的交互单位不再固定为一个数据页面,因此相较于传统的磁盘型存储的数据库,在键值型存储的数据库中读写集合可以具有更加灵活的维护方式。
在一些实施例中,对键值型存储的数据库而言,目标事务的读写集合的数据结构可以如图5所示,请参考图5,每个事务会在内存中申请一块空间用于存放自身的读写集合500,在读写集合500中包括读集501和写集502,在任一个读集501或写集502所在的内存空间中,可以包括一个页眉(Header)结构和多个键(Key1,Key2…KeyN,其中N≥1),该页眉结构用于存放目标事务读或写的数据项范围(键范围),该多个键也即是目标事务读或写的数据项(value)所对应的键(key),如图5,在读集501的Header结构中存放了[Key1,Key10]等键范围。
在一些实施例中,对键值型存储的数据库而言,聚集条件可以是目标事务所对应的数据项的相邻键之间差值小于或等于第二模糊系数,其中,第二模糊系数可以为任一数值,本申请实施例不对第二模糊系数的取值进行具体限定。
在本申请实施例中,提供一种适用于键值型存储的数据库系统的键区域聚集策略,能够在目标事务所涉及的数据项的相邻键之间差值大于或等于第二模糊系数时,将目标事务所涉及的数据项的键存入到读写集合中,在目标事务所涉及的数据项的相邻键之间差值小于第二模糊系数时,将目标事务所涉及的数据项的键范围存入到读写集合的页眉结构中,从而能够将大量的数据项聚集为一个键范围,缩小读写集合的占用空间,提升并发事务冲突查询的效率。
例如,若目标事务对某一数据项进行了操作,在该目标事务的读写集合中仅维护该数据项的键,此外,在目标事务的读写集合中还设置了页眉结构,用于存放键范围,键范围基于键区域聚集策略产生,下面以任一节点设备为例,对该节点设备执行键区域聚集策略的流程进行详述:
2022A、节点设备获取数据库系统预先设定的第二模糊系数。
其中,第二模糊系数代表相邻两个键聚集为一个键范围时相差的最大值,第二模糊系数用于调整键区域聚集的粒度,也即是第二模糊系数用于调整键范围的精确程度,理论上来说,第二模糊系数的取值越大,则键范围的精确程度越低,从而数据项范围越模糊,冲突查询的准确率越低,反之,第二模糊系数的取值越小,则键范围的精确程度越高,从而数据项范围越精确,冲突查询的准确率越高。
2022B、节点设备基于第二模糊系数对目标事务对应的数据项的相邻键进行合并,得到至少一个键范围,将该至少一个键范围确定为该目标事务对应的数据项的数据项范围,将该数据项范围存入该读写集合。
在一些实施例中,节点设备可以遍历目标事务对应的数据项的所有键,对每一个键都检测是否能与相邻键合并,从而能够得到至少一个键范围,在一些情况下,相邻键合并为一个键范围之后,如果下一个键仍然满足聚集条件,键范围仍然可以进一步地进行合并,从而不断扩大键范围所对应的区间。
在合并过程中,对任一个键,若该键与相邻键之间的差值小于或等于该第二模糊系数,节点设备可以将该键与相邻键合并为一个键范围,否则,不对该键与相邻键进行合并。例如,用B2表示第二模糊系数,若key2-key1≤B2,则将key1和key2合并为一个键范围[key1,key2],否则,若key2-key1>B2,则不会触发key1和key2的合并操作,此外,如图5所示,在读集的页眉结构中存储了键范围[key1,key10],是因为key1~key10中在两两相邻的键之间差值均小于或等于第二模糊系数,因此经过层层合并之后,最终被合并为一个键范围[key1,key10]。
在一些实施例中,在读写集合的页面结构中,可以采用bit(比特)数据的形式来记录键或键范围,假设页面结构中需要存储键范围[key1,key10],那么在读写集合中,将前10个bit位的值置为1,代表目前存在一个目标事务所操作的键范围[key1,key10],假设目标事务没有操作key11,那么读写集合中将不存在key11,那么将第11个bit位的值置为0,以此类推,从而能够构成一个位图(bitmap)形式的读写集合,优化了读写集合的数据存储结构。
在一个示例性场景中,假设读写集合采用bit数据形式进行记录,节点设备可以将目前读写集合中的所有key值从小到大排序,遍历所有key值,对任一个key值,判断该key值与后一个key值之间的差值是否小于或等于第二模糊系数,若小于或等于第二模糊系数,则生成一个键范围,将键范围所代表的bit范围均置为1,否则,若大于第二模糊系数,直接将该key值所对应的bit位置为1,重复执行上述过程,直到对所有的key值均执行过键区域聚集策略(也称为键区域聚集算法),经过键区域聚集算法的key值会从读写集合中被清除,从而能够减少对读写集合的空间占用。
在一些实施例中,如果在执行目标事务的查询、更新或者删除中至少一项操作时,目标事务的SQL语句中直接指定了主键范围,那么节点设备可以根据将SQL语句中指定的主键范围的上下界,分别获取到对应的key范围的上下界,将key范围的上下界记录到读写集合的页面结构中,从而无需执行上述键区域聚集算法的各个流程,能够优化事务执行的处理逻辑。
在上述过程中,节点设备通过对相邻键进行合并,确定出至少一个键范围,从而在读写集合中不必记录被聚集每一个键,而是仅在页面结构中记录该至少一个键范围,从而能够减少对读写集合的空间占用,提升数据库系统对并发事务冲突查询的效率。
在一些实施例中,节点设备可以采用数据库系统预先设定的第二模糊系数来执行键区域聚集算法,此时第二模糊系数可以是固定不变的,也可以随时由技术人员在设置中进行更改,从而技术人员可以通过调整第二模糊系数来控制键区域聚集的粒度。可选地,技术人员可以直接将第二模糊系数设置为0,此时系统将精确维护键范围,保证冲突查询算法输出的查询结果信息完全正确,此时也相当于没有进行任何模糊匹配,而是在执行基于数据项的冲突查询算法。
基于上述情况,虽然能够大大降低维护读写集合的开销,然而由于使用了键范围来对相邻键进行模糊化地聚集之后,导致算法所输出的键范围对实际操作的数据对象范围造成不同程度的放大,键区域聚集算法在本质上也是一种模糊匹配的方式,因此会造成一定程度的误判情况,因此有可能会将原本不存在冲突的事务误判为目标事务的冲突事务,由于存在冲突事务时系统会回滚目标事务,从而造成多余回滚现象的发生。
有鉴于此,在另一些实施例中,节点设备还可以通过下述步骤2022C,在并发事务的执行流程中动态地调整第二模糊系数的取值,能够更好地提升系统冲突查询的准确率,兼顾冲突查询的效率和准确率。
2022C、节点设备对至少一个事务的执行过程进行多次采样,确定不同的第二模糊系数所对应的准确率,将准确率最高的第二模糊系数确定为下一次事务执行时采用的第二模糊系数,该准确率用于表示基于不同的第二模糊系数进行采样时准确识别冲突事务的概率。
上述步骤2022C与上述步骤2021E类似,这里不做赘述。
也即是说,节点设备同样可以基于直方图技术对冲突的并发事务进行建模,构建动态调整第二模糊系数的反馈机制,识别出多次采样中出现的冲突误判情况,并及时地对第二模糊系数进行更新,从而减少冲突误判率,提升冲突判断准确率,提高事务处理的效率,针对第二模糊系数的具体建模过程和采样过程与第一模糊系数类似,不做一一赘述。
203、协调节点设备向至少一个节点设备发送目标事务的冲突查询请求,该冲突查询请求用于请求查询该至少一个节点设备中是否存在该目标事务的冲突事务,该冲突事务与该目标事务的操作对象包括同一数据项。
在上述过程中,由于数据库系统中事务提交遵循2PC算法,在目标事务准备提交之前,还需要对目标事务是否冲突进行验证,因此,协调节点设备需要向至少一个节点设备发送冲突查询请求,这个冲突查询请求相当于2PC算法中的准备提交阶段的“验证请求”,该冲突查询请求用于触发该至少一个节点设备分别进行局部验证操作,也即是该至少一个节点设备各自进行局部冲突查询(相当于局部冲突识别),查询各自本地数据库中并发事务是否与目标事务存在冲突。
由于在上述步骤202中,各个节点设备在本地维护目标事务的读写集合时,是基于模糊匹配机制,对目标事务所涉及的数据项进行了一定程度的页面聚集或者键区域聚集,在读写集合中使用数据项范围代替了原本冗杂的数据项,因此在进行冲突查询时,提供一种基于模糊范围的冲突查询算法,能够提升整体冲突查询阶段的处理效率。
针对数据库系统而言,冲突查询算法(也称为冲突识别算法)可以划分为三类,分别包括分布式冲突查询算法、集中式冲突查询算法以及自适应冲突查询算法,在本申请实施例中对分布式冲突查询算法进行详细说明,在下个实施例中将对集中式冲突查询算法以及自适应冲突查询算法进行说明。
在分布式冲突查询算法中,至少一个节点设备各自执行冲突查询算法,由协调节点设备负责汇总查询结果信息,向至少一个节点设备给出是否进行全局提交的指示。
在一些实施例中,冲突查询请求中可以携带活跃事务集合以及目标事务的查询序列号。其中,查询序列号用于表示事务进行冲突查询的时序,查询序列号才可以采用物理时钟、逻辑时钟或者混合物理时钟中至少一项,本申请实施例不对查询序列号的生成当时进行具体限定。
在一些实施例中,当目标事务进入冲突查询阶段(也称为准备提交阶段或验证阶段)时,协调节点设备可以向全局序列号生成集群发送第二获取请求,该第二获取请求用于获取目标事务的查询序列号以及当前时刻的活跃事务集合,全局序列号生成集群响应于该第二获取请求,为目标事务分配一个查询序列号(mid_tn),获取当前时刻已经完成读阶段但尚未完成写阶段的活跃事务集合,具体地,只要任一个事务满足如下条件:已经获取了查询序列号(mid_tn)但尚未获取提交序列号(commit_tn),那么全局序列号生成集群可以将该事务添加至活跃事务集合中。全局序列号生成集群将目标事务的查询序列号以及当前时刻的活跃事务集合发送至协调节点设备,协调节点设备接收该查询序列号以及该活跃事务集合,将该查询序列号以及该活跃事务集合封装在冲突查询请求中,将该冲突查询请求发送至该至少一个节点设备,执行下述步骤204。
204、至少一个节点设备响应于协调节点设备对目标事务的冲突查询请求,查询该至少一个节点设备中是否存在该目标事务的冲突事务,得到查询结果信息。
在上述步骤204中,对至少一个节点设备中任一节点设备,可以通过下述子步骤来进行冲突查询:
2041、节点设备获取活跃事务集合和目标事务的查询序列号,该活跃事务集合为当前处于活跃状态且未提交的事务集合。
可选地,当冲突查询请求中携带活跃事务集合和查询序列号时,节点设备可以在接收到冲突查询请求之后,对该冲突查询请求进行解析,得到活跃事务集合和查询序列号。
在一些实施例中,若冲突查询请求中没有携带活跃事务集合或查询序列号中至少一项,节点设备可以向协调节点设备发送第三获取请求,该第三获取请求用于获取当前时刻的活跃事务集合或查询序列号中至少一项,使得协调节点设备在接收第三获取请求之后,响应于该第三获取请求,将活跃事务集合或查询序列号中至少一项发送至节点设备,另外,如上述步骤203中所描述的,协调节点设备可以从全局序列号生成集群中获取活跃事务集合或查询序列号中至少一项,这里不做赘述。
2042、节点设备从活跃事务集合中确定在目标事务的开始序列号到查询序列号所对应的时间段内开始执行的至少一个活跃事务。
在上述过程中,节点设备获取到查询序列号和活跃事务集合之后,可以从活跃事务集合中在(start_tn,mid_tn]的时间段内开始执行的至少一个活跃事务,具体地,节点设备可以判断活跃事务集合中每个活跃事务的开始序列号是否位于上述时间段内,对任一活跃事务而言,若该活跃事务的开始序列号大于目标事务的开始序列号且小于或等于目标事务的查询序列号,确定该活跃事务位于上述时间段内,否则,确定该活跃事务不位于上述时间段内,节点设备遍历活跃事务集合中的所有活跃事务之后,能够确定出位于上述时间内的至少一个活跃事务,从而基于下述步骤2043局部判断(也即是本地判断)目标事务的读集是否与该至少一个事务的写集存在交集。
2043、节点设备检测目标事务的读集是否与该至少一个活跃事务的写集存在交集,该读集为该目标事务读取的数据项或数据项范围的集合,该写集为该至少一个活跃事务写入的数据项或数据项范围的集合。
在上述过程中,有可能在节点设备中并不会维护该至少一个活跃事务的写集,比如有一部分活跃事务并不涉及到操作该节点设备上存储的数据项,因此,节点设备可以仅对本地所维护了写集的活跃事务进行检测,从而实现局部判断,由协调节点设备汇总各个节点设备的局部判断出的查询结果信息,从而再度进行全局判断,在一些实施例中,节点设备还可以从协调节点设备中获取该至少一个活跃事务的写集,从而执行相应的检测步骤,或者,节点设备从至少一个活跃事务对应的节点设备中获取该至少一个活跃事务的写集,此时的节点设备相当于协调节点设备,从而可以直接进行全局判断,这时相当于执行集中式冲突查询算法,这里不做赘述。
在一些实施例中,由于目标事务的读集中有可能包括数据项或者数据项范围中至少一项,至少一个事务的写集中同样有可能包括数据项或者数据项范围中至少一项,因此,在判断时可以分为下述几种情况:1)节点设备检测读集中的数据项是否与写集中的数据项相同;2)节点设备检测写集中的数据项是否位于读集中的任一第一数据项范围内;3)节点设备检测读集中的数据项是否位于写集中的任一第二数据项范围内;4)节点设备检测读集中的任一第一数据项范围是否与写集中的任一数据项范围存在交集。
其中,第一数据项范围可以是目标事务的读集的页眉结构中存储的任一个数据项范围,第二数据项范围可以是至少一个活跃事务的写集的页面结构中存储的任一个数据项范围。
在上述情况中,只有当上述4种情况的检测结果均为“否”,也即是读集中的数据项均与写集中的数据项不同、写集中不存在数据项位于读集中任一第一数据项范围内、读集中不存在数据项位于写集中任一第二数据项范围内且读集中任一第一数据项范围与写集中任一第二数据项范围不存在交集的情况下,节点设备才确定目标事务的读集与至少一个活跃事务的写集不存在交集,否则,只要存在任一种情况的检测结果为“是”,那么节点设备即确定目标事务的读集与至少一个活跃事务的写集存在交集。
可选地,由于数据项本身可以视为一个长度为0的数据项范围,也即是任一个数据项均可以认为是一个上界与下界相等的数据项范围,因此,上述4种检测情况均可以视为对任一第一数据项范围与任一第二数据项范围是否存在交集进行检测,下面将分别针对基于磁盘存储的数据库以及基于键值对存储的数据库的检测逻辑进行说明。
一、基于磁盘存储的数据库系统
在磁盘型存储的数据库系统中,检测读写集的数据项范围是否存在交集时,对于该读集中任一第一数据项范围以及该写集中任一第二数据项范围,可以遵循如下检测逻辑:
若该第一数据项范围的上界大于或等于该第二数据项范围的下界,或者该第一数据项范围的下界小于或等于该第二数据项范围的上界,节点设备确定该第一数据项范围与该第二数据项范围存在交集,否则,节点设备确定该第一数据项范围与该第二数据项范围不存在交集;若该读集中各个第一数据项范围与该写集中各个第二数据项范围均不存在交集,节点设备确定该读集与该写集不存在交集,否则,节点设备确定该读集与该写集存在交集。
例如,假设第一数据项范围k和第二数据项范围j,那么只要满足下述两个条件中的任一个条件,则认为k和j存在交集:1)读集中第一数据项范围k的上界(k.upper)大于或等于写集中第二数据项范围j的下界(j.lower);2)读集中第一数据项范围k的下界(k.lower)小于或等于写集中第二数据项范围j的上界(j.upper)。
二、基于键值对存储的数据库系统
在键值型存储的数据库系统中,由于读写集合是按照bit数据的形式进行存放的,因此可以采用按bit比对的方式判断读写集合的数据项范围是否存在交集。对于该读集中任一第一数据项范围以及该写集中任一第二数据项范围,可以遵循如下检测逻辑:
若该第一数据项范围的上界小于该第二数据项范围的下界,或者该第一数据项范围的下界大于该第二数据项范围的上界,节点设备确定该第一数据项范围与该第二数据项范围不存在交集;否则,节点设备对该第一数据项范围与该第二数据项范围进行按位与操作,若各个位均输出为0,节点设备确定该第一数据项范围与该第二数据项范围不存在交集,若存在至少一位输出为1,节点设备确定该第一数据项范围与该第二数据项范围存在交集;若该读集中各个第一数据项范围与该写集中各个第二数据项范围均不存在交集,节点设备确定该读集与该写集不存在交集,否则,节点设备确定该读集与该写集存在交集。
例如,假设第一数据项范围k和第二数据项范围j,那么只要满足下述两个条件中的任一个条件,则认为k和j不存在交集:1)读集中第一数据项范围k的上界(k.upper)小于写集中第二数据项范围j的下界(j.lower);2)读集中第一数据项范围k的下界(k.lower)大于写集中第二数据项范围j的上界(j.upper)。
进一步地,若上述两个条件均不满足的情况下,继续按位对应判断数据项范围是否存在交集。假设第一数据项范围k中的第一个bit表示key1,第二数据项范围j中第三个bit表示key1,节点设备可以将第一数据项范围k的第一位与第二数据项范围j的第三位对齐,在对齐之后执行按位与运算(按照某个比较范围对对齐位之后的最小长度执行按位与运算),输出一个运算结果,所运算结果中存在某一位为1,则确定第一数据项范围k和第二数据项范围j存在交集,否则,确定第一数据项范围k和第二数据项范围j不存在交集。比如,采用“&”表示按位与运算,假设k&j=00000011&00000101=00000001,此时确定k和j存在交集,假设k&j=00000011&00001100=00000000,此时确定k和j不存在交集。
在上述过程中,对目标事务的读集以及另一活跃事务的写集,不管是磁盘型存储的数据库系统还是键值型存储的数据库系统,节点设备循环遍历读集中的每个第一数据项范围是否与写集中的每个第二数据项范围存在交集,只要检测到存在任一个第一数据项范围与任一个第二数据项范围存在交集,就认为读集与写集存在交集,退出循环,执行下述步骤2044,否则,若检测出所有的第一数据项范围均与所有的第二数据项范围不存在交集,认为读集与写集不存在交集,也执行下述步骤2044。
2044、若该读集与该写集存在交集,节点设备将该查询结果信息确定为存在该目标事务的冲突事务,若该读集与该写集不存在交集,节点设备将该查询结果信息确定为不存在该目标事务的冲突事务。
在上述过程中,若读集与写集存在交集,生成用于表示该节点设备上存在目标事务的冲突事务的查询结果信息,此时目标事务需要被全局回滚,否则,若读集与写集不存在交集,生成用于表示该节点设备上不存在目标事务的冲突事务的查询结果信息,此时目标事务仍然不一定能够全局提交,因为只能保证该节点设备对目标事务验证通过(也即是该节点设备上不存在冲突事务),节点设备向协调节点设备发送查询结果信息之后,只有当协调节点设备对目标事务全局验证通过(该至少一个节点设备上均不存在冲突事务)时,目标事务才可以全局提交,否则,若存在任何一个其他节点设备对目标事务验证失败(任一个其他节点设备上存在冲突事务),目标事务仍然需要进行全局回滚。
在上述各个子步骤中所提供的分布式冲突查询算法可以使用如下伪代码进行表示:
需要说明的是,对目标事务所涉及的至少一个节点设备中每个节点设备,均基于上述分布式冲突查询算法判断该节点设备上目标事务的读集是否与至少一个活跃事务的写集存在交集,从而保证该至少一个节点设备均对目标事务进行局部判断,在判断完毕后,执行下述步骤205。
205、至少一个节点设备向协调节点设备发送该查询结果信息。
在上述过程中,各个节点设备可以分别向协调节点设备发送各自的查询结果信息。由于冲突查询阶段相当于2PC算法中的验证阶段,因此,若查询结果信息表示存在冲突事务,此时查询结果信息可以视为验证失败信息,若查询结果信息表示不存在冲突事务,此时查询结果信息可以视为验证通过信息。
206、协调节点设备接收至少一个节点设备对该目标事务的查询结果信息。
在协调节点设备接收各个节点设备发送的查询结果信息之后,可以对该查询结果信息进行解析,若查询结果信息表示至少一个节点设备均不存在该目标事务的冲突事务,执行下述步骤207,否则,若查询结果信息表示至少一个节点设备中任一节点设备存在目标事务的冲突事务,协调节点设备可以向该至少一个节点设备发送对该目标事务的全局回滚请求,触发该至少一个节点设备对该目标事务进行全局回滚。
207、若查询结果信息表示至少一个节点设备均不存在该目标事务的冲突事务,协调节点设备向该至少一个节点设备发送对该目标事务的全局提交请求。
在上述过程中,若目标事务涉及的所有节点设备均不存在冲突事务,协调节点设备可以向全局序列号生成集群发送第四获取请求,该第四获取请求用于获取目标事务的提交序列号(commit_tn),全局序列号生成集群响应于该第四获取请求,为目标事务分配一个提交序列号,全局序列号生成集群向协调节点设备发送该提交序列号,协调节点设备向至少一个节点设备发送携带提交序列号的全局提交请求。
208、至少一个节点设备响应于协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示该数据库系统中不存在该目标事务的冲突事务。
在上述过程中,对至少一个节点设备中任一节点设备,在对目标事务进行全局提交时,相当于进入目标事务的写入阶段,对目标事务所涉及的各个数据项执行落盘操作。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本申请实施例提供的方法,通过节点设备响应于协调节点设备对目标事务的冲突查询请求,查询该节点设备中是否存在该目标事务的冲突事务,得到查询结果信息,该冲突事务与该目标事务的操作对象包括同一数据项,该节点设备向该协调节点设备发送该查询结果信息,该节点设备响应于该协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示该数据库系统中不存在该目标事务的冲突事务,通过在目标事务执行之后、提交之前引入冲突查询阶段,检测节点设备中是否存在冲突事务,使得并发控制算法无需依赖于分布式死锁,避免了由于分布式死锁而带来的性能损耗,提升了数据库系统的事务执行效率。
进一步地,基于存储模型的不同,针对磁盘型存储的数据库系统提出了页面聚集算法,针对键值型存储的数据库系统提出了键区域聚集算法,从而降低了读写集合的维护开销,提高了并发事务冲突查询的效率。其次,采用直方图技术对冲突的并发事务进行建模,构建事务冲突反馈算法,能够动态地对第一模糊系数或第二模糊系数进行自适应地反馈调整,从而动态调节页面聚集或键区域聚集的粒度,减少了基于模糊范围的冲突查询算法的误判率,兼顾了事务执行的效率和准确率。此外,在提供页面聚集算法以及键区域聚集算法等模糊匹配的基础上,还提供了基于模糊范围的冲突识别算法,能够加快对存在冲突的并发事务的识别效率。
上述实施例提供一种能够适用于分布式数据库系统的事务执行机制,相当于将一种改进的OCC(Optimistic Concurrency Control,乐观并发控制)技术迁移到分布式数据库系统中,在传统OCC机制中,事务的执行流程被分为三个阶段:读取阶段、验证阶段以及写入阶段。
在读取阶段,事务执行其所包含的读写操作,数据库系统中维护事务的读写集合,分别包括事务读取的所有数据项以及事务写入的所有数据项。在验证阶段,基于冲突检测规则对事务的读写集合进行检测,确定事务是否可以提交,冲突检测规则如下:事务T在验证阶段需要验证从事务T开始执行到开始验证这段时间内,每个提交的事务T’的写集是否与事务T的读集存在交集(俗称为“相交”),如果不存在交集则通过验证,事务T随即进入写入阶段,反之,如果存在交集则无法通过验证,事务T进入回滚阶段。在写入阶段,只有通过验证的事务才能够进入写入阶段,事务对维护在内存中的写集进行数据落盘等操作。
对上述传统的OCC机制进行分析,可以看出,首先,传统的OCC机制读写集合维护开销巨大且不适用于长事务,这是由于传统OCC机制需要在读写集合中维护读取或写入的所有数据项,导致读写集合的维护需要占用大量的内存空间,而在大数据场景下某一事务可能会读取的数据项数量是无法估计的,导致读写集合的维护开销巨大,另外,对于一些执行事件较长的长事务来说,在执行过程中长事务的读写集合需要一直维护在内存里,如果数据库系统中并发执行的长事务较多,很容易因维护读写集合而出现内存空间不足的情况,从而造成整个数据库系统不可用;其次,传统的OCC机制在冲突查询阶段还存在遍历数据项耗时长的问题,这是由于冲突查询阶段依赖于对读写集合进行遍历进而完成冲突查询,由于读写集合内维护了事务读取或写入的所有数据项,从而导致在冲突查询阶段需要对读集内所有数据项与写集内所有数据项进行一一遍历,致使冲突查询阶段计算开销大,遍历数据项耗时长;最后,传统的OCC机制还存在传输读写集合的网络开销巨大的弊端,如果数据库系统为分布式数据库系统,由于分布式数据库系统的数据会被分布存储到不同的节点设备中,那么事务在进入验证阶段的时候,协调节点设备需要从事务涉及的各个节点设备中同步读写集合,而读写集合内本身也存储了大量的数据项,从而会带来大量的网络传输开销,因此,有鉴于上述各种弊端,传统的OCC机制无法适用于分布式数据库系统。
本申请实施例中对传统的OCC技术在冲突查询、读写集合维护等方面均进行了优化,以便于在数据处理系统,特别是在分布式数据库系统(比如SQL、NoSQL、NewSQL,关系型、非关系型)、分布式大数据处理系统、存在使用OCC技术的事务型系统中,根据存储模型的不同,采取各自相适应的算法,提高事务冲突识别和判断的效率,使得OCC机制更加高效,应用面更加广泛。
为了能够更好地解释在基于OCC技术的分布式数据库系统中各个事务的执行流程,请参考图6,图6是本申请实施例提供的一种分布式OCC并发控制方法的流程图,在分布式OCC技术进行事务并发控制时,事务的执行可以划分为读取阶段601、验证阶段602以及写入阶段603,下面进行详述:
一、读取阶段601
在读取阶段601中,首先在协调节点设备上进行事务的初始化操作,维护全局事务上下文,然后协调节点设备向节点设备1和节点设备2发送执行请求,节点设备1和节点设备2分别执行事务逻辑中包含的读写操作,维护事务的读写集合。
以节点设备1执行读事务为例,协调节点设备向节点设备1发送携带SQL查询语句的执行请求,节点设备1将读事务的数据项存入到本地读集中,节点设备1向协调节点设备返回查询结果,协调节点设备将该查询结果存入全局读集。以节点设备2执行写事务为例,协调节点设备向节点设备2发送携带SQL更新语句的执行请求,节点设备2将写事务的数据项存入到本地缓存,在缓存中维护写集,节点设备2向协调节点设备返回待更新的数据项,协调节点设备将该待更新的数据项存入全局写集。
二、验证阶段602
在事务提交时遵循2PC算法,并将2PC算法和OCC技术在验证阶段602和写入阶段603进行融合。
OCC技术的验证阶段602相当于2PC算法的准备提交(prepare)阶段,也即是上一个实施例中所涉及的冲突查询阶段,在事务的验证阶段602中,协调节点设备需要与事务涉及的所有节点设备进行通信,向事务涉及的所有节点设备发送验证请求(冲突查询请求),通知事务涉及的所有节点设备准备提交,并在各个节点设备上进行本地验证(局部验证)操作,从而局部查询出节点设备本地的并发事务是否与目标事务发生冲突,若不存在冲突,说明通过验证,节点设备可以向协调节点设备返回一个ACK(acknowledge character,确认字符)形式的查询结果信息,否则,若存在冲突,说明验证失败,可以向协调节点设备返回一个错误码形式的查询结果信息。
协调节点设备汇总各个节点设备返回的查询结果信息,如果所有节点设备均返回了ACK,那么可以在协调节点设备上再进行全局验证,如果协调者上所有验证通过,则标志该事务已经全局提交,进入下一个写入阶段603,否则,只要有任一验证不通过,则标志该事务不能继续提交,需要进行全局回滚。
在通常情况下,节点设备和协调节点设备上均需要维护事务的读写集合,若技术人员设置采用分布式冲突查询算法,此时仅在节点设备上维护读写集合,并在节点设备上进行局部验证,协调节点设备汇总各个节点设备的查询结果信息,不会进行自适应调整,若技术人员设置采用集中式冲突查询算法,此时仅在协调节点设备上维护全局的读写集合,并在协调节点设备上进行全局验证,不会进行自适应调整,若技术人员设置采用自适应冲突查询算法,此时事务需要在节点设备和协调节点设备上同时维护读写集合,直到确定采用某一种策略之后,节点设备或协调节点设备上可以不再继续维护读写集合,例如,某一时刻自适应冲突查询算法确定采用分布式验证策略,那么从该时刻开始不再协调节点设备上继续维护事务的读写集合,仅在节点设备上进行维护,直到下一次调整策略。
在上述过程中,技术人员可以通过修改系统参数的方式来指定采用何种冲突查询算法,从而针对性调整读写集合的维护位置,比如,可以包含三个参数值,若技术人员设置第一参数值时,可以确定指定了分布式冲突查询算法,若技术人员设置第二参数值时,可以确定指定了集中式冲突查询算法,若技术人员设置第三参数值时,可以确定指定了自适应冲突查询算法。
三、写入阶段603
写入阶段603相当于2PC算法中的提交阶段,协调节点设备在记录事务全局提交之后,再次与事务涉及的所有节点设备进行通信,向事务涉及的所有节点设备发送全局提交请求,通知所有节点设备对事务进行全局提交,各个节点设备会执行事务的提交操作,清理事务的上下文信息,将原来维护在缓存中的待写入数据进行落盘操作,从而完成事务的写入阶段,各个节点设备向协调节点设备返回确认提交信息(commited信息),协调节点设备在接收到各个节点设备的确认提交信息之后,清空事务的全局读写集合。
本申请实施例提供的方法,通过对传统的OCC机制进行改进,使得改进后的OCC机制能够适用于分布式数据库系统,也即提供了一种分布式OCC机制,在冲突查询阶段中提供不同的冲突查询算法来满足不同的业务场景需求,使得分布式数据库系统整体的事务处理性能得到提升,其中,自适应冲突查询算法能够动态调整验证阶段采用的冲突查询算法,保障了分布式数据库系统的性能尽量达到全局的最优化。
进一步地,还可以根据存储引擎的类型不同,分别选择合适的读写集维护策略,比如针对磁盘型存储引擎应用上一个实施例中提供的页面聚集算法,针对键值型存储引擎应用上一个实施例中提供的键区域聚集算法,以减少读写集合的维护开销,此外,还可以应用基于直方图模型的反馈机制动态调整页面聚集算法的第一模糊系数、键区域聚集算法的第二模糊系数,以提升验证阶段的准确性。
由于在维护事务的读写集合时采用了数据项范围代替了原本的一系列连续度较高的数据项,因此不管是集中式冲突查询算法还是前述实施例中的分布式冲突查询算法,均属于基于模糊范围的冲突查询算法,可以提升验证阶段的事务执行效率。根据算法的执行主体不同,可以划分为协调节点设备上执行的集中式冲突查询算法(或称为全局验证算法)以及至少一个节点设备上执行的分布式冲突查询算法(或称为局部验证算法)。
图7是本申请实施例提供的一种集中式冲突查询算法的流程图,请参考图7,在本申请实施例中,将对集中式冲突查询算法进行介绍,包括下述步骤:
700、协调节点设备创建目标事务的读写集合,向目标事务所涉及的至少一个节点设备发送执行请求,该读写集合包括读集或者写集中至少一项。
上述步骤700中创建读写集合的过程与上述步骤200中初始化操作中创建读写集合的过程类似,这里不做赘述。此外,协调节点设备还可以向全局序列号生成集群申请目标事务的开始序列号(start_tn),从而将开始序列号封装在执行请求中,向至少一个节点设备发送该执行请求。
701、至少一个节点设备响应于该执行请求,执行该目标事务。
上述步骤701与上述步骤201中执行过程类似,这里不做赘述。
702、若目标事务所对应的数据项不满足聚集条件,协调节点设备将该目标事务对应的数据项存入该读写集合,若目标事务所对应的数据项满足聚集条件,协调节点设备将该目标事务对应的数据项的数据项范围存入该读写集合。
上述步骤702与上述步骤202类似,只是在协调节点设备上维护目标事务的读写集合,这里不做赘述。
703、协调节点设备获取活跃事务集合和目标事务的查询序列号,该活跃事务集合为当前处于活跃状态且未提交的事务集合。
在一些实施例中,当目标事务进入冲突查询阶段(也称为准备提交阶段或验证阶段)时,协调节点设备可以向全局序列号生成集群发送第二获取请求,该第二获取请求用于获取目标事务的查询序列号以及当前时刻的活跃事务集合,全局序列号生成集群响应于该第二获取请求,为目标事务分配一个查询序列号(mid_tn),获取当前时刻已经完成读阶段但尚未完成写阶段的活跃事务集合,具体地,只要任一个事务满足如下条件:已经获取了查询序列号(mid_tn)但尚未获取提交序列号(commit_tn),那么全局序列号生成集群可以将该事务添加至活跃事务集合中。全局序列号生成集群将目标事务的查询序列号以及当前时刻的活跃事务集合发送至协调节点设备,协调节点设备接收该查询序列号以及该活跃事务集合。
需要说明的是,在目标事务进入冲突查询阶段,协调节点设备向全局序列号生成集群发送第二获取请求的同时,还需要阻塞全局序列号生成集群响应其他事务的第二获取请求,避免全局序列号生成集群为其他事务分配查询序列号,从而能够全局阻塞其他事务进入冲突查询阶段,保证分布式数据库系统的数据一致性。
704、协调节点设备从活跃事务集合中确定在目标事务的开始序列号到查询序列号所对应的时间段内开始执行的至少一个活跃事务。
上述步骤704与上述步骤2042类似,这里不做赘述。
705、协调节点设备检测目标事务的读集是否与该至少一个活跃事务的写集存在交集,该读集为该目标事务读取的数据项或数据项范围的集合,该写集为该至少一个活跃事务写入的数据项或数据项范围的集合。
上述步骤705与上述步骤2043类似,这里不做赘述。
在上述步骤703-705中,协调节点设备判断在(start_tn,mid_tn]的时间段内开始执行的至少一个活跃事务的写集是否与目标事务的读集存在交集,判断逻辑为:判断读集与写集的header结构(页眉结构)中所包含的数据项范围是否存在交集,如果存在交集,协调节点设备向至少一个节点设备发送对目标事务的全局回滚请求,否则,执行下述步骤706。
相较于传统的OCC机制而言,传统的OCC机制在冲突查询阶段需要逐一遍历tuple(也称为元组或数据项)组成的读写集合,目标事务涉及的tuple个数越大,遍历次数呈指数级增加,导致事务执行效率低。而在上述过程中,由于对tuple进行了聚集,因此遍历次数不与tuple个数直接相关,而是与tuple所聚集而成的数据项范围相关,能够大大缩小遍历次数,提升了事务执行效率。
706、若该读集与该写集不存在交集,协调节点设备向至少一个节点设备发送对目标事务的全局提交请求。
上述步骤706与上述步骤207类似,这里不做赘述。
707、至少一个节点设备响应于协调节点设备的全局提交请求,对该目标事务进行全局提交。
上述步骤707与上述步骤208类似,这里不做赘述。
在本申请实施例中提供的集中式冲突查询算法可以使用如下伪代码进行表示:
需要说明的是,当目标事务提交完毕之后,协调节点设备可以通知全局序列号生成集群取消阻塞,使得全局序列号生成集群可以开始响应其他事务的第二获取请求。
在本申请实施例中,提供了一种集中式冲突查询算法,无需在目标事务所涉及的每个节点设备上均进行局部判断之后再汇总查询结果信息,因此相较于分布式冲突查询算法而言,在冲突查询阶段的计算以及同步开销较小。然而,由于协调节点设备在进行全局判断时,需要维护全局的读写集合,因此需要将读写集合从目标事务涉及的每个节点设备中传输到协调节点设备,导致同步读写集合的网络开销较大。
对于前述实施例中提供的分布式冲突查询算法而言,由于无需将读写集合同步至协调节点设备,因此能够减少同步读写集合的网络开销,但是由于需要在目标事务涉及的每个节点设备上进行局部判断,因此在冲突查询阶段的计算和同步开销较大。
有鉴于此,本申请实施例还提供一种自适应冲突查询算法,通过构建代价模型来衡量不同冲突查询算法的代价,代价模型可以表示为如下表达式:
代价=网络开销-读写集开销
例如,1KB的数据发送给三个节点设备,则网络开销为3,又例如,1KB的数据维护在读写集合中,读写集开销为1,据此,可以计算出不同冲突查询算法的总代价。
分布式数据库系统可以初始化一个自适应阈值,若代价小于自适应阈值,可以确定采用集中式冲突查询算法,若代价大于或等于自适应阈值,可以确定采用分布式冲突查询算法。
在一些实施例中,分布式数据项系统初始化自适应阈值之后,该自适应阈值在后续事务执行的流程中还可以动态地进行自适应调整,类似于上述实施例中对第一模糊系数、第二模糊系数的反馈机制,自适应阈值动态调整的过程可以包括:设定随机数作为采样间隔进行多次采样,根据多次采样过程的统计值动态调整自适应阈值。比如,假设在100次采样中,有超过50次基于自适应阈值选择的冲突查询算法不是最优的,那么说明自适应阈值设置的不够合理,需要对自适应阈值进行调整。比如,若误判的采样事务中,最优策略为集中式冲突查询算法的有Y(Y≥0)个,最优策略为分布式冲突查询算法的有Z(Z≥0)个,假设已有的自适应阈值为A,那么可以将自适应阈值更新为(Z/Y)*A,使得自适应阈值的选取更加准确合理,使得自适应冲突查询算法选择出最优策略的概率得以提升。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
在本申请实施例中,基于一种适用于分布式数据库系统的OCC技术,介绍了分布式OCC机制下的事务执行流程,并且针对磁盘型存储和键值型存储分别设计了不同的读写集合维护策略,使得系统在不同的存储策略下,均具有优秀的性能,而基于模糊范围的冲突查询算法,能够减少冲突查询阶段的遍历次数,加快冲突查询的效率,从而提升事务执行效率,此外,提出的反馈调整机制,通过直方图模型对读写集合的模糊程度进行动态调整,优化冲突查询过程的准确率,减少对于冲突事务的误判率,提出的自适应冲突查询机制,通过代价模型选择合适的冲突查询算法,能够进一步地提升冲突查询的效率,提升事务执行效率。
图8是本申请实施例提供的一种事务执行装置的结构示意图,请参考图8,该装置应用于数据库系统中,该装置相当于上述各个实施例中的节点设备,该数据库系统还包括协调节点设备,该装置包括:
查询模块801,用于响应于该协调节点设备对目标事务的冲突查询请求,查询是否存在该目标事务的冲突事务,得到查询结果信息,该冲突事务与该目标事务的操作对象包括同一数据项;
发送模块802,用于向该协调节点设备发送该查询结果信息;
全局提交模块803,用于响应于该协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示该数据库系统中不存在该目标事务的冲突事务。
本申请实施例提供的装置,通过响应于协调节点设备对目标事务的冲突查询请求,查询是否存在该目标事务的冲突事务,得到查询结果信息,该冲突事务与该目标事务的操作对象包括同一数据项,向该协调节点设备发送该查询结果信息,响应于该协调节点设备在目标条件下发送的对该目标事务的全局提交请求,对该目标事务进行全局提交,该目标条件用于表示数据库系统中不存在该目标事务的冲突事务,通过在目标事务执行之后、提交之前引入冲突查询阶段,检测是否存在冲突事务,使得并发控制算法无需依赖于分布式死锁,避免了由于分布式死锁而带来的性能损耗,提升了数据库系统的事务执行效率。
在一些实施例中,基于图8的装置组成,该查询模块801包括:
获取单元,用于获取活跃事务集合和目标事务的查询序列号,该活跃事务集合为当前处于活跃状态且未提交的事务集合;
第一确定单元,用于从该活跃事务集合中确定在该目标事务的开始序列号到该查询序列号所对应的时间段内开始执行的至少一个活跃事务;
检测单元,用于检测该目标事务的读集是否与该至少一个活跃事务的写集存在交集,该读集为该目标事务读取的数据项或数据项范围的集合,该写集为该至少一个活跃事务写入的数据项或数据项范围的集合;
第二确定单元,用于若该读集与该写集存在交集,将该查询结果信息确定为存在该目标事务的冲突事务,若该读集与该写集不存在交集,将该查询结果信息确定为不存在该目标事务的冲突事务。
在一些实施例中,若该数据库系统基于磁盘存储,该检测单元用于:
对于该读集中任一第一数据项范围以及该写集中任一第二数据项范围,若该第一数据项范围的上界大于或等于该第二数据项范围的下界,或者该第一数据项范围的下界小于或等于该第二数据项范围的上界,确定该第一数据项范围与该第二数据项范围存在交集,否则,确定该第一数据项范围与该第二数据项范围不存在交集;
若该读集中各个第一数据项范围与该写集中各个第二数据项范围均不存在交集,确定该读集与该写集不存在交集,否则,确定该读集与该写集存在交集。
在一些实施例中,若该数据库系统基于键值对存储,该检测单元用于:
对于该读集中任一第一数据项范围以及该写集中任一第二数据项范围,若该第一数据项范围的上界小于该第二数据项范围的下界,或者该第一数据项范围的下界大于该第二数据项范围的上界,确定该第一数据项范围与该第二数据项范围不存在交集;否则,对该第一数据项范围与该第二数据项范围进行按位与操作,若各个位均输出为0,确定该第一数据项范围与该第二数据项范围不存在交集,若存在至少一位输出为1,确定该第一数据项范围与该第二数据项范围存在交集;
若该读集中各个第一数据项范围与该写集中各个第二数据项范围均不存在交集,确定该读集与该写集不存在交集,否则,确定该读集与该写集存在交集。
在一些实施例中,基于图8的装置组成,该装置还包括:
创建模块,用于创建该目标事务的读写集合,该读写集合包括读集或者写集中至少一项;
存入模块,用于若该目标事务所对应的数据项不满足聚集条件,将该目标事务对应的数据项存入该读写集合,若该目标事务所对应的数据项满足聚集条件,将该目标事务对应的数据项的数据项范围存入该读写集合。
在一些实施例中,若该数据库系统基于磁盘存储,该聚集条件为该目标事务所对应的数据项数量大于目标阈值;
基于图8的装置组成,该存入模块包括:
第三确定单元,用于确定该目标事务对应的数据项所在的页面范围;
页面分簇单元,用于基于第一模糊系数对该页面范围进行分簇,得到多个页面簇;
存入单元,用于将该多个页面簇的主键范围确定为该目标事务对应的数据项的数据项范围,将该数据项范围存入该读写集合。
在一些实施例中,该页面分簇单元用于:
在该页面范围中按照页面从小到大的顺序,将每第一模糊系数个页面确定为一个页面簇,最后一个页面簇的页面数量小于或等于该第一模糊系数。
在一些实施例中,该装置还用于:
对至少一个事务的执行过程进行多次采样,确定不同的第一模糊系数所对应的准确率,将准确率最高的第一模糊系数确定为下一次事务执行时采用的第一模糊系数,该准确率用于表示基于不同的第一模糊系数进行采样时准确识别冲突事务的概率。
在一些实施例中,若该数据库系统基于键值对存储,该聚集条件为该目标事务所对应的数据项的相邻键之间差值小于或等于第二模糊系数;
基于图8的装置组成,该存入模块包括:
合并存入单元,用于基于该第二模糊系数对该目标事务对应的数据项的相邻键进行合并,得到至少一个键范围,将该至少一个键范围确定为该目标事务对应的数据项的数据项范围,将该数据项范围存入该读写集合。
在一些实施例中,该合并存入单元用于:
对任一个键,若该键与相邻键之间的差值小于或等于该第二模糊系数,将该键与相邻键合并为一个键范围,否则,不对该键与相邻键进行合并。
在一些实施例中,该装置还用于:
对至少一个事务的执行过程进行多次采样,确定不同的第二模糊系数所对应的准确率,将准确率最高的第二模糊系数确定为下一次事务执行时采用的第二模糊系数,该准确率用于表示基于不同的第二模糊系数进行采样时准确识别冲突事务的概率。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的事务执行装置在执行事务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务执行装置与事务执行方法实施例属于同一构思,其具体实现过程详见事务执行方法实施例,这里不再赘述。
图9是本申请实施例提供的一种事务执行装置的结构示意图,请参考图9,该装置包括:
发送模块901,用于向至少一个节点设备发送目标事务的冲突查询请求,该冲突查询请求用于请求查询该至少一个节点设备上是否存在该目标事务的冲突事务,该冲突事务与该目标事务的操作对象包括同一数据项;
接收模块902,用于接收至少一个节点设备对该目标事务的查询结果信息;
该发送模块901,还用于若该查询结果信息表示该至少一个节点设备均不存在该目标事务的冲突事务,向该至少一个节点设备发送对该目标事务的全局提交请求。
本申请实施例提供的装置,通过向至少一个节点设备发送目标事务的冲突查询请求,该冲突查询请求用于请求查询该至少一个节点设备上是否存在该目标事务的冲突事务,该冲突事务与该目标事务的操作对象包括同一数据项,接收至少一个节点设备对该目标事务的查询结果信息,若该查询结果信息表示该至少一个节点设备均不存在该目标事务的冲突事务,向该至少一个节点设备发送对该目标事务的全局提交请求,通过在目标事务执行之后、提交之前引入冲突查询阶段,指示至少一个节点设备检测是否存在冲突事务,汇总至少一个节点设备返回的查询结果信息,从而全局判断数据库系统中是否存在冲突事务,若不存在冲突则对目标事务进行全局提交,使得并发控制算法无需依赖于分布式死锁,避免了由于分布式死锁而带来的性能损耗,提升了数据库系统的事务执行效率。
需要说明的是:上述实施例提供的事务执行装置在执行事务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务执行装置与事务执行方法实施例属于同一构思,其具体实现过程详见事务执行方法实施例,这里不再赘述。
图10是本申请实施例提供的一种计算机设备的结构示意图,该计算机设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(CentralProcessing Units,CPU)1001和一个或一个以上的存储器1002,其中,该存储器1002中存储有至少一条程序代码,该至少一条程序代码由该处理器1001加载并执行以实现上述各个实施例提供的事务执行方法。当然,该计算机设备1000还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备1000还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由终端中的处理器执行以完成上述各个实施例中的事务执行方法。例如,该计算机可读存储介质可以是ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种事务执行方法,其特征在于,应用于数据库系统中,所述数据库系统包括节点设备和协调节点设备,所述方法包括:
所述节点设备响应于所述协调节点设备对目标事务的冲突查询请求,查询所述节点设备中是否存在所述目标事务的冲突事务,得到查询结果信息,所述冲突事务与所述目标事务的操作对象包括同一数据项;
所述节点设备向所述协调节点设备发送所述查询结果信息;
所述节点设备响应于所述协调节点设备在目标条件下发送的对所述目标事务的全局提交请求,对所述目标事务进行全局提交,所述目标条件用于表示所述数据库系统中不存在所述目标事务的冲突事务。
2.根据权利要求1所述的方法,其特征在于,所述查询所述节点设备中是否存在所述目标事务的冲突事务,得到查询结果信息包括:
获取活跃事务集合和目标事务的查询序列号,所述活跃事务集合为当前处于活跃状态且未提交的事务集合;
从所述活跃事务集合中确定在所述目标事务的开始序列号到所述查询序列号所对应的时间段内开始执行的至少一个活跃事务;
检测所述目标事务的读集是否与所述至少一个活跃事务的写集存在交集,所述读集为所述目标事务读取的数据项或数据项范围的集合,所述写集为所述至少一个活跃事务写入的数据项或数据项范围的集合;
若所述读集与所述写集存在交集,将所述查询结果信息确定为存在所述目标事务的冲突事务,若所述读集与所述写集不存在交集,将所述查询结果信息确定为不存在所述目标事务的冲突事务。
3.根据权利要求2所述的方法,其特征在于,若所述数据库系统基于磁盘存储,所述检测所述目标事务的读集是否与所述至少一个活跃事务的写集存在交集包括:
对于所述读集中任一第一数据项范围以及所述写集中任一第二数据项范围,若所述第一数据项范围的上界大于或等于所述第二数据项范围的下界,或者所述第一数据项范围的下界小于或等于所述第二数据项范围的上界,确定所述第一数据项范围与所述第二数据项范围存在交集,否则,确定所述第一数据项范围与所述第二数据项范围不存在交集;
若所述读集中各个第一数据项范围与所述写集中各个第二数据项范围均不存在交集,确定所述读集与所述写集不存在交集,否则,确定所述读集与所述写集存在交集。
4.根据权利要求2所述的方法,其特征在于,若所述数据库系统基于键值对存储,所述检测所述目标事务的读集是否与所述至少一个活跃事务的写集存在交集包括:
对于所述读集中任一第一数据项范围以及所述写集中任一第二数据项范围,若所述第一数据项范围的上界小于所述第二数据项范围的下界,或者所述第一数据项范围的下界大于所述第二数据项范围的上界,确定所述第一数据项范围与所述第二数据项范围不存在交集;否则,对所述第一数据项范围与所述第二数据项范围进行按位与操作,若各个位均输出为0,确定所述第一数据项范围与所述第二数据项范围不存在交集,若存在至少一位输出为1,确定所述第一数据项范围与所述第二数据项范围存在交集;
若所述读集中各个第一数据项范围与所述写集中各个第二数据项范围均不存在交集,确定所述读集与所述写集不存在交集,否则,确定所述读集与所述写集存在交集。
5.根据权利要求1所述的方法,其特征在于,所述查询所述节点设备中是否存在所述目标事务的冲突事务之前,所述方法还包括:
创建所述目标事务的读写集合,所述读写集合包括读集或者写集中至少一项;
若所述目标事务所对应的数据项不满足聚集条件,将所述目标事务对应的数据项存入所述读写集合,若所述目标事务所对应的数据项满足聚集条件,将所述目标事务对应的数据项的数据项范围存入所述读写集合。
6.根据权利要求5所述的方法,其特征在于,若所述数据库系统基于磁盘存储,所述聚集条件为所述目标事务所对应的数据项数量大于目标阈值;
所述将所述目标事务对应的数据项的数据项范围存入所述读写集合包括:
确定所述目标事务对应的数据项所在的页面范围;
基于第一模糊系数对所述页面范围进行分簇,得到多个页面簇;
将所述多个页面簇的主键范围确定为所述目标事务对应的数据项的数据项范围,将所述数据项范围存入所述读写集合。
7.根据权利要求6所述的方法,其特征在于,所述基于第一模糊系数对所述页面范围进行分簇,得到多个页面簇包括:
在所述页面范围中按照页面从小到大的顺序,将每第一模糊系数个页面确定为一个页面簇,最后一个页面簇的页面数量小于或等于所述第一模糊系数。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对至少一个事务的执行过程进行多次采样,确定不同的第一模糊系数所对应的准确率,将准确率最高的第一模糊系数确定为下一次事务执行时采用的第一模糊系数,所述准确率用于表示基于不同的第一模糊系数进行采样时准确识别冲突事务的概率。
9.根据权利要求5所述的方法,其特征在于,若所述数据库系统基于键值对存储,所述聚集条件为所述目标事务所对应的数据项的相邻键之间差值小于或等于第二模糊系数;
所述将所述目标事务对应的数据项的数据项范围存入所述读写集合包括:
基于所述第二模糊系数对所述目标事务对应的数据项的相邻键进行合并,得到至少一个键范围,将所述至少一个键范围确定为所述目标事务对应的数据项的数据项范围,将所述数据项范围存入所述读写集合。
10.根据权利要求9所述的方法,其特征在于,所述基于第二模糊系数对所述目标事务对应的数据项的相邻键进行合并包括:
对任一个键,若所述键与相邻键之间的差值小于或等于所述第二模糊系数,将所述键与相邻键合并为一个键范围,否则,不对所述键与相邻键进行合并。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
对至少一个事务的执行过程进行多次采样,确定不同的第二模糊系数所对应的准确率,将准确率最高的第二模糊系数确定为下一次事务执行时采用的第二模糊系数,所述准确率用于表示基于不同的第二模糊系数进行采样时准确识别冲突事务的概率。
12.一种事务执行方法,其特征在于,所述方法包括:
向至少一个节点设备发送目标事务的冲突查询请求,所述冲突查询请求用于请求查询所述至少一个节点设备上是否存在所述目标事务的冲突事务,所述冲突事务与所述目标事务的操作对象包括同一数据项;
接收至少一个节点设备对所述目标事务的查询结果信息;
若所述查询结果信息表示所述至少一个节点设备均不存在所述目标事务的冲突事务,向所述至少一个节点设备发送对所述目标事务的全局提交请求。
13.一种事务执行装置,其特征在于,应用于数据库系统中,所述数据库系统还包括协调节点设备,所述装置包括:
查询模块,用于响应于所述协调节点设备对目标事务的冲突查询请求,查询是否存在所述目标事务的冲突事务,得到查询结果信息,所述冲突事务与所述目标事务的操作对象包括同一数据项;
发送模块,用于向所述协调节点设备发送所述查询结果信息;
全局提交模块,用于响应于所述协调节点设备在目标条件下发送的对所述目标事务的全局提交请求,对所述目标事务进行全局提交,所述目标条件用于表示所述数据库系统中不存在所述目标事务的冲突事务。
14.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求11任一项或权利要求12所述的事务执行方法所执行的操作。
15.一种存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求11任一项或权利要求12所述的事务执行方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911378490.8A CN111159252B (zh) | 2019-12-27 | 2019-12-27 | 事务执行方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911378490.8A CN111159252B (zh) | 2019-12-27 | 2019-12-27 | 事务执行方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111159252A true CN111159252A (zh) | 2020-05-15 |
CN111159252B CN111159252B (zh) | 2022-10-21 |
Family
ID=70558622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911378490.8A Active CN111159252B (zh) | 2019-12-27 | 2019-12-27 | 事务执行方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159252B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111510464A (zh) * | 2020-06-24 | 2020-08-07 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及系统 |
CN111708615A (zh) * | 2020-05-20 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111752960A (zh) * | 2020-06-28 | 2020-10-09 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN111984893A (zh) * | 2020-09-29 | 2020-11-24 | 杭州迪普科技股份有限公司 | 系统日志配置冲突提醒方法、装置及系统 |
CN112003946A (zh) * | 2020-08-26 | 2020-11-27 | 新华智云科技有限公司 | 数据落盘方法与数据落盘系统 |
CN112463311A (zh) * | 2021-01-28 | 2021-03-09 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112463810A (zh) * | 2020-12-08 | 2021-03-09 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 基于分布式事务的数据处理方法、装置、设备及存储介质 |
CN112527759A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
CN113992750A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 一种全局事务协同方法、装置、设备及介质 |
CN114022148A (zh) * | 2021-12-24 | 2022-02-08 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
WO2022213526A1 (zh) * | 2021-04-06 | 2022-10-13 | 华为云计算技术有限公司 | 事务处理方法、分布式数据库系统、集群及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151467A1 (en) * | 2011-01-03 | 2013-06-13 | Manavalan KRISHNAN | Slave Consistency in a Synchronous Replication Environment |
US20150074070A1 (en) * | 2013-09-09 | 2015-03-12 | Yahoo! Inc. | System and method for reconciling transactional and non-transactional operations in key-value stores |
CN105389161A (zh) * | 2014-09-09 | 2016-03-09 | 龙芯中科技术有限公司 | 事务内存的冲突检测方法、事务内存系统及微处理器 |
CN109977171A (zh) * | 2019-02-02 | 2019-07-05 | 中国人民大学 | 一种保证事务一致性和线性一致性的分布式系统和方法 |
CN110196760A (zh) * | 2018-07-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式事务一致性实现方法及装置 |
-
2019
- 2019-12-27 CN CN201911378490.8A patent/CN111159252B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130151467A1 (en) * | 2011-01-03 | 2013-06-13 | Manavalan KRISHNAN | Slave Consistency in a Synchronous Replication Environment |
US20150074070A1 (en) * | 2013-09-09 | 2015-03-12 | Yahoo! Inc. | System and method for reconciling transactional and non-transactional operations in key-value stores |
CN105389161A (zh) * | 2014-09-09 | 2016-03-09 | 龙芯中科技术有限公司 | 事务内存的冲突检测方法、事务内存系统及微处理器 |
CN110196760A (zh) * | 2018-07-12 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 分布式事务一致性实现方法及装置 |
CN109977171A (zh) * | 2019-02-02 | 2019-07-05 | 中国人民大学 | 一种保证事务一致性和线性一致性的分布式系统和方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112231071A (zh) * | 2020-05-20 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111708615A (zh) * | 2020-05-20 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111708615B (zh) * | 2020-05-20 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112231071B (zh) * | 2020-05-20 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
US11947524B2 (en) | 2020-05-20 | 2024-04-02 | Tencent Technology (Shenzhen) Company Limited | Transaction processing method and apparatus, computer device, and storage medium |
CN111510464B (zh) * | 2020-06-24 | 2020-10-02 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及系统 |
CN111510464A (zh) * | 2020-06-24 | 2020-08-07 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及系统 |
CN111752960A (zh) * | 2020-06-28 | 2020-10-09 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN111752960B (zh) * | 2020-06-28 | 2023-07-28 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN111736964B (zh) * | 2020-07-02 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN111736964A (zh) * | 2020-07-02 | 2020-10-02 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN113992750A (zh) * | 2020-07-10 | 2022-01-28 | 华为技术有限公司 | 一种全局事务协同方法、装置、设备及介质 |
CN112003946A (zh) * | 2020-08-26 | 2020-11-27 | 新华智云科技有限公司 | 数据落盘方法与数据落盘系统 |
CN112003946B (zh) * | 2020-08-26 | 2023-05-12 | 新华智云科技有限公司 | 数据落盘方法与数据落盘系统 |
CN111984893A (zh) * | 2020-09-29 | 2020-11-24 | 杭州迪普科技股份有限公司 | 系统日志配置冲突提醒方法、装置及系统 |
CN111984893B (zh) * | 2020-09-29 | 2023-09-12 | 杭州迪普科技股份有限公司 | 系统日志配置冲突提醒方法、装置及系统 |
CN112463810A (zh) * | 2020-12-08 | 2021-03-09 | 佳讯飞鸿(北京)智能科技研究院有限公司 | 基于分布式事务的数据处理方法、装置、设备及存储介质 |
CN112463311A (zh) * | 2021-01-28 | 2021-03-09 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112463311B (zh) * | 2021-01-28 | 2021-06-08 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN112527759B (zh) * | 2021-02-09 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
CN112527759A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
WO2022213526A1 (zh) * | 2021-04-06 | 2022-10-13 | 华为云计算技术有限公司 | 事务处理方法、分布式数据库系统、集群及介质 |
CN114022148B (zh) * | 2021-12-24 | 2022-04-22 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
CN114022148A (zh) * | 2021-12-24 | 2022-02-08 | 杭州趣链科技有限公司 | 基于区块链的交易冲突检测方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111159252B (zh) | 2022-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111159252B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
CN111338766B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN111143389B (zh) | 事务执行方法、装置、计算机设备及存储介质 | |
US11372890B2 (en) | Distributed database transaction protocol | |
JP7271670B2 (ja) | データレプリケーション方法、装置、コンピュータ機器及びコンピュータプログラム | |
CN111597015B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US11003689B2 (en) | Distributed database transaction protocol | |
US10235440B2 (en) | Decentralized transaction commit protocol | |
US20230100223A1 (en) | Transaction processing method and apparatus, computer device, and storage medium | |
US9589041B2 (en) | Client and server integration for replicating data | |
US10977227B2 (en) | Dynamic snapshot isolation protocol selection | |
US10191932B2 (en) | Dependency-aware transaction batching for data replication | |
US20130110873A1 (en) | Method and system for data storage and management | |
US11822540B2 (en) | Data read method and apparatus, computer device, and storage medium | |
US20230099664A1 (en) | Transaction processing method, system, apparatus, device, storage medium, and program product | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
WO2023124242A1 (zh) | 事务执行方法、装置、设备和存储介质 | |
WO2024119980A1 (zh) | 一种数据分析方法及相关设备 | |
JP2023546818A (ja) | データベースシステムのトランザクション処理方法、装置、電子機器、及びコンピュータプログラム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |