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

技术编号:27593286 阅读:24 留言:0更新日期:2021-03-10 10:11
本申请公开了一种事务处理方法、装置、计算机设备及存储介质,属于数据库技术领域。本申请通过在目标事务的执行阶段,获取目标事务的读写集合,在验证阶段,根据目标事务的逻辑开始时刻和逻辑提交时刻,验证目标事务是否符合自身的并发一致性级别,并基于预定策略动态更新逻辑开始时刻,使得最终更新后的逻辑开始时刻和逻辑提交时刻能够在合法的情况下,不会发生自身的并发一致性级别所不允许的数据异常,进而提交目标事务,能够使得整个系统内不同的事务对应于不同的并发一致性级别,大大提升的数据异常检测准确程度,提高了事务处理效率以及数据库系统的性能。率以及数据库系统的性能。率以及数据库系统的性能。

【技术实现步骤摘要】
事务处理方法、装置、计算机设备及存储介质


[0001]本申请涉及数据库
,特别涉及一种事务处理方法、装置、计算机设备及存储介质。

技术介绍

[0002]数据处理技术需要事务的语义并借用关系数据库的ACID四个特性,来保证系统的事务特性,以满足电子交易的需求。其中,A是原子性,C是一致性,I是隔离性,D是持久性。电子交易类操作,需要由这四个特性来保证交易的安全与可靠。分布式事务处理技术同样需要满足事务的ACID四个特性,为满足ACID四个特性,数据处理技术需要多种技术做保障,其中最重要的就是数据的一致性和隔离性,其中,数据的一致性决定了数据的正确性问题,而隔离性决定了并发系统的性能问题。
[0003]实现事务一致性,也就是发现、解决事务并发操作在数据项上是否造成数据异常且如何消除数据异常的问题,主要依赖的相关技术包括四种数据异常与隔离级别、数据库的事务处理技术中的并发访问控制技术,例如,基于封锁的并发访问控制技术、基于时间戳排序的并发访问控制技术、基于多版本并发控制(Multi-Version Concurrency Control,MVCC)并发访问控制技术和基于运行控制中心(Operation Control Center,OCC)并发访问控制技术等。这些技术需要保证数据不出现异常,即满足事务的可串行化调度,从而来保证数据的正确性。
[0004]以上所述的事务一致性是数据库范畴内定义的和事务相关的如何避免数据异常的一致性。数据库领域范围内的可串行化技术、多种并发访问控制技术仅是解决事务一致性相关问题,无法解决其他一致性问题(例如,共享数据对象一致性问题),由此通过可串行化技术,无法检测到部分异常问题。也就是说,存在部分满足可串行化要求,但仍具备异常的事务,可串行化调度技术无法检测,也就是说,在事务一致性下与其他一致性(例如,共享数据对象一致性)下的数据异常问题,无法进行识别,对系统的状态检测准确率低。

技术实现思路

[0005]本申请实施例提供了一种事务处理方法、装置、计算机设备及存储介质。能够提升数据库系统的异常检测准确程度。该技术方案包括如下内容。
[0006]一方面,提供了一种事务处理方法,该方法包括:响应于目标事务的读写操作,获取所述目标事务的读集和写集;响应于所述目标事务的验证指令,确定所述目标事务的逻辑开始时刻和逻辑提交时刻;响应于所述逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于所述写集更新所述逻辑开始时刻;响应于更新后的逻辑开始时刻小于或等于所述逻辑提交时刻,提交所述目标事务。
[0007]一方面,提供了一种事务处理装置,该装置包括:
获取模块,用于响应于目标事务的读写操作,获取所述目标事务的读集和写集;确定模块,用于响应于所述目标事务的验证指令,确定所述目标事务的逻辑开始时刻和逻辑提交时刻;更新模块,用于响应于所述逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于所述写集更新所述逻辑开始时刻;提交模块,用于响应于更新后的逻辑开始时刻小于或等于所述逻辑提交时刻,提交所述目标事务。
[0008]在一种可能实施方式中,所述更新模块包括:获取子模块,用于获取所述写集中的至少一个数据项的至少一个待写事务信息,所述至少一个待写事务信息分别用于标识正在修改所述至少一个数据项的事务;调整子模块,用于响应于所述至少一个待写事务信息均为空,调整所述逻辑开始时刻;回滚子模块,用于响应于所述至少一个待写事务信息中的任一待写事务信息不为空,回滚所述目标事务。
[0009]在一种可能实施方式中,所述调整子模块包括:获取单元,用于对于所述至少一个数据项中的任一数据项,将所述任一数据项的待写事务信息获取为所述目标事务的事务标识;更新单元,用于将所述逻辑开始时刻更新至大于所述任一数据项的最大读事务时间戳,所述最大读事务时间戳用于表示读取过所述任一数据项的事务的逻辑提交时刻中的最大值;调整单元,用于响应于更新后的逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于活跃事务集合调整所述逻辑开始时刻,所述活跃事务集合用于标识已开始执行但未提交完毕的事务;所述回滚子模块,还用于响应于更新后的逻辑开始时刻和所述逻辑提交时刻不符合所述目标事务的并发一致性级别,回滚所述目标事务。
[0010]在一种可能实施方式中,所述活跃事务集合包括第一事务集合和第二事务集合,所述第一事务集合用于标识处于提交中状态或者验证通过状态的事务,所述第二事务集合用于标识处于运行中状态的事务;所述调整单元,用于:将所述逻辑开始时刻更新至大于所述第一事务集合中的最大逻辑提交时刻;响应于更新后的逻辑开始时刻小于或等于所述逻辑提交时刻,将所述第二事务集合中的事务的逻辑提交时刻调整至小于所述更新后的逻辑开始时刻;所述回滚子模块,还用于响应于所述更新后的逻辑开始时刻大于所述逻辑提交时刻,回滚所述目标事务。
[0011]在一种可能实施方式中,所述回滚子模块还用于:响应于所述第二事务集合中任一事务的逻辑开始时刻大于调整后的所述逻辑提交时刻,回滚所述任一事务。
[0012]在一种可能实施方式中,所述装置还包括:获取确定模块,用于响应于所述并发一致性级别为串行化,获取所述目标事务的并发事务;响应于所述目标事务的逻辑提交时刻小于所述并发事务的逻辑开始时刻,或者所述目标事务的逻辑开始时刻大于所述并发事务的逻辑提交时刻,获取所述目标事务所属会话
的最新已完成事务时间戳;响应于所述目标事务的逻辑提交时刻大于或等于所述最新已完成事务时间戳,确定符合所述并发一致性级别。
[0013]在一种可能实施方式中,所述装置还包括:获取确定模块,用于响应于所述并发一致性级别为严格化且所述目标事务为写事务,获取所述目标事务的并发写事务;响应于所述目标事务的逻辑提交时刻小于所述并发写事务的逻辑开始时刻,或者所述目标事务的逻辑开始时刻大于所述并发写事务的逻辑提交时刻,获取所述并发写事务的并发只读事务;响应于所述并发只读事务的逻辑开始时刻大于所述并发写事务的逻辑开始时刻,获取所述目标事务所属会话的最新已完成事务时间戳;响应于所述目标事务的逻辑提交时刻大于或等于所述最新已完成事务时间戳,确定符合所述并发一致性级别。
[0014]在一种可能实施方式中,所述装置还包括:获取确定模块,用于响应于所述并发一致性级别为线性化且所述目标事务为写事务,获取所述目标事务的并发写事务;响应于所述目标事务和所述并发写事务通过可串行化验证,获取所述并发写事务的并发只读事务;响应于所述并发只读事务的逻辑开始时刻大于所述并发写事务的逻辑开始时刻,获取所述目标事务所属会话的最新已完成事务时间戳;响应于所述目标事务的逻辑提交时刻大于或等于所述最新已完成事务时间戳,确定符合所述并发一致性级别。
[0015]在一种可能实施方式中,所述装置还包括:获取确定模块,用于响应于所述并发一致性级别为顺序化,获取所述目标事务的并发事务;响应于所述目标事务和所述并发事务通过可串行化验证,确定与所述目标事务属于同一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种事务处理方法,其特征在于,所述方法包括:响应于目标事务的读写操作,获取所述目标事务的读集和写集;响应于所述目标事务的验证指令,确定所述目标事务的逻辑开始时刻和逻辑提交时刻;响应于所述逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于所述写集更新所述逻辑开始时刻;响应于更新后的逻辑开始时刻小于或等于所述逻辑提交时刻,提交所述目标事务。2.根据权利要求1所述的方法,其特征在于,所述基于所述写集更新所述逻辑开始时刻包括:获取所述写集中的至少一个数据项的至少一个待写事务信息,所述至少一个待写事务信息分别用于标识正在修改所述至少一个数据项的事务;响应于所述至少一个待写事务信息均为空,调整所述逻辑开始时刻;响应于所述至少一个待写事务信息中的任一待写事务信息不为空,回滚所述目标事务。3.根据权利要求2所述的方法,其特征在于,所述调整所述逻辑开始时刻包括:对于所述至少一个数据项中的任一数据项,将所述任一数据项的待写事务信息获取为所述目标事务的事务标识;将所述逻辑开始时刻更新至大于所述任一数据项的最大读事务时间戳,所述最大读事务时间戳用于表示读取过所述任一数据项的事务的逻辑提交时刻中的最大值;响应于更新后的逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于活跃事务集合调整所述逻辑开始时刻,所述活跃事务集合用于标识已开始执行但未提交完毕的事务;响应于更新后的逻辑开始时刻和所述逻辑提交时刻不符合所述目标事务的并发一致性级别,回滚所述目标事务。4.根据权利要求3所述的方法,其特征在于,所述活跃事务集合包括第一事务集合和第二事务集合,所述第一事务集合用于标识处于提交中状态或者验证通过状态的事务,所述第二事务集合用于标识处于运行中状态的事务;所述基于活跃事务集合调整所述逻辑开始时刻包括:将所述逻辑开始时刻更新至大于所述第一事务集合中的最大逻辑提交时刻;响应于更新后的逻辑开始时刻小于或等于所述逻辑提交时刻,将所述第二事务集合中的事务的逻辑提交时刻调整至小于所述更新后的逻辑开始时刻;响应于所述更新后的逻辑开始时刻大于所述逻辑提交时刻,回滚所述目标事务。5.根据权利要求4所述的方法,其特征在于,所述将所述第二事务集合中的事务的逻辑提交时刻调整至小于所述更新后的逻辑开始时刻之后,所述方法还包括:响应于所述第二事务集合中任一事务的逻辑开始时刻大于调整后的所述逻辑提交时刻,回滚所述任一事务。6.根据权利要求1所述的方法,其特征在于,所述响应于所述逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于所述写集更新所述逻辑开始时刻之前,所述方法还包括:
响应于所述并发一致性级别为串行化,获取所述目标事务的并发事务;响应于所述目标事务的逻辑提交时刻小于所述并发事务的逻辑开始时刻,或者所述目标事务的逻辑开始时刻大于所述并发事务的逻辑提交时刻,获取所述目标事务所属会话的最新已完成事务时间戳;响应于所述目标事务的逻辑提交时刻大于或等于所述最新已完成事务时间戳,确定符合所述并发一致性级别。7.根据权利要求1所述的方法,其特征在于,所述响应于所述逻辑开始时刻和所述逻辑提交时刻符合所述目标事务的并发一致性级别,基于所述写集更新所述逻辑开始时刻之前,所述方法还包括:响应于所述并发一致性级别为严格化且所述目标事务为写事务,获取所述目标事务的并发写事务;响应于所述目标事务的逻辑提交时刻小于所述并发写事务的逻辑开始时刻,或者所述目标事务的逻辑开始时刻大于所述并发写事务的逻辑提交时刻,获取所述并发写事务的并发只读事务;响应于所述并发只读事务的逻辑开始时刻大于所述并发写事务的逻辑开始时刻,获取所述目标事务所属会话的最新已完成事务时间戳;响应于所述目标事务的逻辑提交时刻大于或等于所述最新已完成事务时间戳,确定符合所述并发...

【专利技术属性】
技术研发人员:李海翔
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1