事务处理方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:24995466 阅读:23 留言:0更新日期:2020-07-24 17:58
本申请公开了一种事务处理方法、装置、计算机设备及存储介质,属于数据库技术领域。本申请通过对目标事务的读写集合进行一致性检测,能够在事务提交阶段精准识别出单事务构成的数据异常,当一致性检测通过时,获取待合并事务集,并对目标事务与历史事务进行合并,在事务合并后不存在数据异常的条件下,提交目标事务,通过事务合并方式能够检测出多事务共同构成的数据异常,从而能够全面的识别出数据库系统内各种各样的数据异常,保证数据状态的一致性,上述事务处理机制既不依赖于封锁技术也不依赖于依赖图技术,避免了限制数据库系统的并发度,也无需遍历并发事务去识别依赖图中环的存在,提升了数据库系统的事务处理效率。

【技术实现步骤摘要】
事务处理方法、装置、计算机设备及存储介质
本申请涉及数据库
,特别涉及一种事务处理方法、装置、计算机设备及存储介质。
技术介绍
随着数据库技术的发展,在数据库系统中如何识别并规避数据异常成为了一个关键问题。目前有两种识别数据异常的方法,其一是利用封锁技术,依赖锁的互斥机制来避免数据异常,其二是利用依赖图技术,通过在并发事务构成的依赖图中确认是否存在环,如果存在环则需要打破环的存在从而消除潜在的数据异常。然而,封锁技术严重限制了数据库系统的并发度,导致事务处理效率低下,而依赖图技术又需要遍历每个并发事务以识别出环的存在,导致事务处理效率仍然不高。因此,亟需一种能够提升事务处理效率的事务处理方法。
技术实现思路
本申请实施例提供了一种事务处理方法、装置、计算机设备及存储介质,能够提升数据库系统的事务处理效率。该技术方案如下:一方面,提供了一种事务处理方法,该方法包括:响应于目标事务的提交请求,对所述目标事务的读写集合进行一致性检测;响应于对所述读写集合的一致性检测通过,基于所述读写集合,获取所述目标事务的待合并事务集,所述待合并事务集用于提供待与所述目标事务进行合并的历史事务;对所述目标事务以及所述待合并事务集中的历史事务进行合并,响应于事务合并后不存在数据异常,提交所述目标事务。在一种可能实施方式中,所述对所述目标事务的读写集合进行一致性检测包括:对所述目标事务的读集中变量版本进行一致性检测;响应于对所述目标事务的读集中变量版本的一致性检测通过,对所述目标事务的写集中变量进行一致性检测;否则,回滚所述目标事务;响应于对所述目标事务的写集中变量的一致性检测通过,为所述写集中变量分配版本号,确定对所述读写集合的一致性检测通过;否则,回滚所述目标事务。在一种可能实施方式中,所述对所述目标事务的读集中变量版本进行一致性检测包括:对于所述目标事务的读集中任一变量版本,将所述目标事务添加至所述变量版本的版本读取集合中,所述版本读取集合用于表示当前读取所述变量版本的事务集合;响应于存在任一已提交事务写入版本号大于所述变量版本的目标版本,且所述目标事务读取的另一变量版本的版本号大于所述已提交事务所读取的对应变量版本的版本号,确定对所述变量版本一致性检测不通过,回滚所述目标事务;否则,确定对所述变量版本的一致性检测通过。在一种可能实施方式中,所述对所述目标事务的写集中变量进行一致性检测包括:对于所述写集中任一变量,获取所述变量当前已提交的最大版本号;响应于所述读集中存在所述变量的版本号与所述最大版本号不相等,确定对所述变量一致性检测不通过,回滚所述目标事务;否则,确定对所述变量的一致性检测通过。在一种可能实施方式中,所述基于所述读写集合,获取所述目标事务的待合并事务集包括:对于所述目标事务的读集中任一变量版本,响应于所述变量版本的下一版本位于所述目标事务的写集中,将所述变量版本的版本读取集合中的事务添加至所述待合并事务集;将写入所述变量版本的事务添加至所述待合并事务集。在一种可能实施方式中,所述对所述目标事务以及所述待合并事务集中的历史事务进行合并包括:对于所述待合并事务集中任一历史事务,响应于所述目标事务的读集中的变量均包含在所述历史事务的读集中,跳过所述历史事务;否则,将所述目标事务的读集合并至所述历史事务的读集,对读集合并后的历史事务递归执行合并操作,直到遍历所述待合并事务集。在一种可能实施方式中,所述将所述目标事务的读集合并至所述历史事务的读集包括:对所述目标事务的读集中任一变量版本,响应于所述历史事务的读集中不包含与所述变量版本对应的任一版本,将所述变量版本添加至所述历史事务的读集中。在一种可能实施方式中,所述对所述目标事务以及所述待合并事务集中的历史事务进行合并包括:对于所述待合并事务集中任一历史事务,响应于所述目标事务与所述历史事务之间不存在动边交叉,将所述目标事务与所述历史事务在逻辑上进行融合,得到一个逻辑事务。在一种可能实施方式中,所述将所述目标事务与所述历史事务在逻辑上进行融合包括:将所述目标事务的读集与所述历史事务的读集进行合并,得到所述逻辑事务的读集;将所述目标事务的写集与所述历史事务的写集进行合并,得到所述逻辑事务的写集。在一种可能实施方式中,所述方法还包括:响应于所述目标事务的读集和所述历史事务的读集中包括同一变量的不同变量版本,或者所述目标事务的写集和所述历史事务的写集中包括同一变量的不同变量版本,将所述同一变量的不同变量版本合并为所述同一变量的逻辑版本。在一种可能实施方式中,所述方法还包括:响应于所述逻辑事务的读集中包括至少两种变量的变量版本,且所述逻辑事务的写集中包括所述至少两种变量的其他变量版本,将所述至少两种变量合并为逻辑变量。在一种可能实施方式中,所述对所述目标事务的读写集合进行一致性检测之前,所述方法还包括:在开始执行所述目标事务时,将所述目标事务的读集和写集初始化为空集;响应于所述目标事务对任一变量进行更新,将所述变量添加至所述目标事务的写集中,不为所述变量分配版本号;响应于所述目标事务读取任一变量,若所述变量位于所述目标事务的写集中,读取所述目标事务针对所述变量写入的值;若所述变量位于所述目标事务的读集中,读取所述目标事务的读集中已存储的所述变量的值;否则,读取所述变量当前已提交的最大版本,将所述最大版本添加至所述目标事务的读集中。一方面,提供了一种事务处理装置,该装置包括:检测模块,用于响应于目标事务的提交请求,对所述目标事务的读写集合进行一致性检测;获取模块,用于响应于对所述读写集合的一致性检测通过,基于所述读写集合,获取所述目标事务的待合并事务集,所述待合并事务集用于提供待与所述目标事务进行合并的历史事务;合并提交模块,用于对所述目标事务以及所述待合并事务集中的历史事务进行合并,响应于事务合并后不存在数据异常,提交所述目标事务。在一种可能实施方式中,所述检测模块包括:第一检测单元,用于对所述目标事务的读集中变量版本进行一致性检测;第二检测单元,用于响应于对所述目标事务的读集中变量版本的一致性检测通过,对所述目标事务的写集中变量进行一致性检测;否则,回滚所述目标事务;确定单元,用于响应于对所述目标事务的写集中变量的一致性检测通过,为所述写集中变量分配版本号,确定对所述读写集合的一致性检测通过;否则,回滚所述目标事务。在一种可能实施方式中,所述第一检测单元用于:对于所述目标事务的读集中任一变量版本,将所述目标事务添加至所述变量版本的版本读取集合中,所述版本读取集合用于表示当前读取所述变量版本的事务集合;响应于存在任一已提交事务写入版本号大于所述变量版本的目标版本,且所述目标事务读取的另一变量版本的版本号大于所述已提交事务所读取的对应变量版本的版本号,确定对所本文档来自技高网...

【技术保护点】
1.一种事务处理方法,其特征在于,所述方法包括:/n响应于目标事务的提交请求,对所述目标事务的读写集合进行一致性检测;/n响应于对所述读写集合的一致性检测通过,基于所述读写集合,获取所述目标事务的待合并事务集,所述待合并事务集用于提供待与所述目标事务进行合并的历史事务;/n对所述目标事务以及所述待合并事务集中的历史事务进行合并,响应于事务合并后不存在数据异常,提交所述目标事务。/n

【技术特征摘要】
1.一种事务处理方法,其特征在于,所述方法包括:
响应于目标事务的提交请求,对所述目标事务的读写集合进行一致性检测;
响应于对所述读写集合的一致性检测通过,基于所述读写集合,获取所述目标事务的待合并事务集,所述待合并事务集用于提供待与所述目标事务进行合并的历史事务;
对所述目标事务以及所述待合并事务集中的历史事务进行合并,响应于事务合并后不存在数据异常,提交所述目标事务。


2.根据权利要求1所述的方法,其特征在于,所述对所述目标事务的读写集合进行一致性检测包括:
对所述目标事务的读集中变量版本进行一致性检测;
响应于对所述目标事务的读集中变量版本的一致性检测通过,对所述目标事务的写集中变量进行一致性检测;否则,回滚所述目标事务;
响应于对所述目标事务的写集中变量的一致性检测通过,为所述写集中变量分配版本号,确定对所述读写集合的一致性检测通过;否则,回滚所述目标事务。


3.根据权利要求2所述的方法,其特征在于,所述对所述目标事务的读集中变量版本进行一致性检测包括:
对于所述目标事务的读集中任一变量版本,将所述目标事务添加至所述变量版本的版本读取集合中,所述版本读取集合用于表示当前读取所述变量版本的事务集合;
响应于存在任一已提交事务写入版本号大于所述变量版本的目标版本,且所述目标事务读取的另一变量版本的版本号大于所述已提交事务所读取的对应变量版本的版本号,确定对所述变量版本一致性检测不通过,回滚所述目标事务;否则,确定对所述变量版本的一致性检测通过。


4.根据权利要求2所述的方法,其特征在于,所述对所述目标事务的写集中变量进行一致性检测包括:
对于所述写集中任一变量,获取所述变量当前已提交的最大版本号;
响应于所述读集中存在所述变量的版本号与所述最大版本号不相等,确定对所述变量一致性检测不通过,回滚所述目标事务;否则,确定对所述变量的一致性检测通过。


5.根据权利要求1所述的方法,其特征在于,所述基于所述读写集合,获取所述目标事务的待合并事务集包括:
对于所述目标事务的读集中任一变量版本,响应于所述变量版本的下一版本位于所述目标事务的写集中,将所述变量版本的版本读取集合中的事务添加至所述待合并事务集;将写入所述变量版本的事务添加至所述待合并事务集。


6.根据权利要求1所述的方法,其特征在于,所述对所述目标事务以及所述待合并事务集中的历史事务进行合并包括:
对于所述待合并事务集中任一历史事务,响应于所述目标事务的读集中的变量均包含在所述历史事务的读集中,跳过所述历史事务;否则,将所述目标事务的读集合并至所述历史事务的读集,对读集合并后的历史事务递归执行合并操作,直到遍历所述待合并事务集。


7.根据权利要求6所述的方法,其特征在于,所述将所述目标事务的读集合并至所述历史事务的读集包括:
对所述目标事务的读集中任一变量版本,响应于所述历史事务的读集中不包含与所述变量版本对应的任一版本,将所述变量版本添加至所述...

【专利技术属性】
技术研发人员:李海翔刘畅杜小勇卢卫张孝潘安群
申请(专利权)人:腾讯科技深圳有限公司中国人民大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1