一种分布式数据库系统中分布式事务的处理方法技术方案

技术编号:24330744 阅读:103 留言:0更新日期:2020-05-29 19:31
本发明专利技术公开了一种分布式数据库系统中分布式事务的处理方法,基于对现有严格两阶段封锁协议和两阶段提交协议的分析,为了克服分布式事务执行过程中持锁时间过长的影响,本发明专利技术在两阶段提交协议中事务准备阶段,提前释放了锁资源,通过维护事务的提交依赖关系信息,确定事务的提交和回滚的顺序,避免事务异常的发生,保证了事务的正确性。本发明专利技术有效地缩减了分布式事务持有锁的时间,减少了事务之间的冲突率,提高了事务处理性能。

A distributed transaction processing method in distributed database system

【技术实现步骤摘要】
一种分布式数据库系统中分布式事务的处理方法
本专利技术涉及数据库
,具体涉及一种分布式数据库系统中分布式事务的处理方法。
技术介绍
随着业务规模的不断增大,集中式数据库系统已经难以通过扩展来满足业务事务处理的性能需求。分布式数据库系统是构建在分布式集群上的数据库系统,能够通过将数据切分到多个节点上的方式实现事务处理性能的扩展。当一个事务处理涉及到多个节点时,会成为分布式事务。为了保证分布式事务的原子性、一致性、隔离性、持久性(ACID),分布式数据库系统需要在节点之间通过多次网络交互进行必要的同步。然而目前数据在网络中传输速度相差本地处理速度十倍以上,成为了分布式事务时延过高的主要原因。现有技术中,为保证分布式事务执行的正确性,通常采用严格两阶段封锁(StrictTwo-PhaseLocking,简称S2PL)和两阶段提交(Two-PhaseCommit,简称2PC)协议。严格两阶段封锁协议的执行流程:增长阶段,事务可以获取锁,但不能释放锁;收缩阶段,事务可以释放锁,但不能获取新锁,并且要求事务提交或中止之前不能释写锁;两阶段提交协议的执行流程:准备阶段,事务管理器节点请求各个资源管理器对是否提交该事务继续投票,资源管理器节点必须做出响应;执行阶段,事务管理器节点依据投票结果向各个资源管理器节点发送事务提交与否的最终决议,资源管理器节点执行这个决议并返回确认信息。上述现有技术中,存在如下缺陷:两阶段提交协议的执行需要多次耗时的网络交互,期间锁被事务持续持有,这增加了事务之间冲突的可能性,降低了事务的吞吐量,特别是在高冲突的负载下,这种影响尤为显著;为了提升容错能力,分布式数据库通常为数据维护多个副本,副本之间的同步会进一步延长锁的持有时间,事务处理的性能严重衰退。
技术实现思路
本专利技术的目的是为了克服分布式事务执行过程中持锁时间过长的影响而提出的一种分布式数据库系统中分布式事务的处理方法,该方法能够缩短分布式事务持锁时间,降低事务之间冲突的可能性,从而提升事务处理的性能。实现本专利技术目的的具体技术方案是:一种分布式数据库系统中分布式事务的处理方法,该方法包括以下具体步骤:步骤1:事务数据访问以读/写锁模式对记录加锁,检查最新更新该记录的事务是否为已经提交或已经中止,若所述事务为已经提交或已经中止,则继续执行事务,若所述事务不为已经提交或已经中止,则将该事务加入到当前事务的输出依赖集合,并将当前事务的输入依赖数加一;步骤2:事务准备事务以提前写/提前读模式对本事务的写集合与读集合中的记录加锁,检查当前事务的输入依赖数是否为零或状态为中止,若当前事务为零或状态为中止,继续执行当前事务,若当前事务不为零或状态为中止,则一直阻塞当前事务;检查当前事务是否状态为中止或违反隔离性,若当前事务为中止状态或违反隔离性,则回复事务管理器反对提交的消息,若当前事务不为中止状态且不违反隔离性,则对当前事务写集合和读集合中的记录解锁并回复事务管理器同意提交的消息;步骤3:事务提交检查当前事务是否可以提交,若当前事务可以提交,则执行事务提交,将当前事务的所有输出依赖事务的输入依赖数减一,设置当前事务的状态为已提交,回复事务管理器确认提交的消息;步骤4:事务回滚若当前事务不可以提交,则执行事务回滚,以中止锁模式对当前事务写集合中的记录加锁,先回滚当前事务的输出依赖事务,再回滚当前事务,对当前事务写集合中的记录进行解锁,设置当前事务状态为中止,回复事务管理器确认中止的消息。所述锁模式包括读即Read、写即Write、提前读即E-Read、提前写即E-Write及中止即Abort,当前为E-Write/E-Read锁模式时,与任何锁模式兼容;当前为任意锁模式时,与Abort锁模式兼容;当前为Abort锁模式时,与Read和Write锁模式不兼容。本专利技术的有益效果:本专利技术提出的分布式数据库系统中分布式事务的处理方法,在两阶段提交协议准备阶段提前释放了锁资源,这有效地缩减了锁的持有时间,减少了事务之间的冲突率,提高了分布式事务的性能;通过维护事务的输入依赖、输出依赖信息,确定事务的提交和回滚的顺序,避免了异常的发生,保证了正确性。并且本专利技术的技术方案易于工程实现,能快速应用于现有系统中。附图说明图1为本专利技术实施例1的流程图;图2为本专利技术实施例2涉及的事务数据访问示意图;图3是本专利技术实施例2涉及的事务准备示意图;图4是本专利技术实施例2涉及的事务提交示意图;图5是本专利技术实施例2涉及的事务回滚示意图。具体实施方式结合以下具体实施例和附图,对本专利技术作进一步的详细说明。实施本专利技术的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本专利技术没有特别限制内容。实施例1参阅图1,本实施例包括锁模式、数据访问、事务准备、事务提交及事务回滚,其中,所述锁模式用来实现在事务数据访问、提前释放锁以及事务回滚时对数据的保护,有读(Read)、写(Write)、提前读(E-Read)、提前写(E-Write)、中止(Abort)五种,当前为E-Write/E-Read锁模式时,与任何锁模式兼容,当前为任意锁模式时,与中止(Abort)锁兼容,当前为Abort锁模式时,与读锁和写锁不兼容。其中,所述数据访问步骤包括如下步骤:步骤A1:事务以读/写模式对记录X进行加锁;步骤A2:事务通过记录X上的utid,寻找到最近更新记录X的事务In_xact上下文,判断其状态state是否为COMMITTED/ABORTED,成立则流程结束;步骤A3:将记录X加入事务的读记录集合rs/写记录集合ws,并判断事务是否存在于事务In_xact的输出依赖集合(outDepSet),成立则流程结束;步骤A4:将事务加入到事务In_xact的输出依赖集合outDepSet中,并将事务的输入依赖事务数目(inDepCount)加1,流程结束。其中,所述事务准备步骤包括如下步骤:步骤B1:将事务的状态state设置为PREPARING;步骤B2:将事务写集合中记录的最近更新事务标识号(utid)更新为事务的标识号(id);步骤B3:对事务写集合和读集合中的记录加E-Write/E-Read锁;步骤B4:判断事务的输入依赖事务数目不等于0并且不被级联回滚,成立则阻塞事务,不成立则继续执行后续步骤;步骤B5:判断事务的状态state是否为ABORTED或者违反隔离性,不成立则跳转至步骤B7;步骤B6:向事务管理器回复VOTE_NO,流程结束;步骤B7:对事务写集合和读集合中的记录进行解锁;步骤B8:向事务管理器回复VOTE_YES,将事务的状态state设置为PREPARED;流程结束。其中,所述事务提交步骤包括如下步骤:步骤C1:释放本文档来自技高网
...

【技术保护点】
1.一种分布式数据库系统中分布式事务的处理方法,其特征在于,该方法包括以下具体步骤:/n步骤1:事务数据访问/n以读/写锁模式对记录加锁,检查最新更新该记录的事务是否为已经提交或已经中止,若所述事务为已经提交或已经中止,则继续执行事务,若所述事务不为已经提交或已经中止,则将该事务加入到当前事务的输出依赖集合,并将当前事务的输入依赖数加一;/n步骤2:事务准备/n事务以提前写/提前读模式对本事务的写集合与读集合中的记录加锁,检查当前事务的输入依赖数是否为零或状态为中止,若当前事务为零或状态为中止,继续执行当前事务,若当前事务不为零或状态为中止,则一直阻塞当前事务;/n检查当前事务是否状态为中止或违反隔离性,若当前事务为中止状态或违反隔离性,则回复事务管理器反对提交的消息,若当前事务不为中止状态且不违反隔离性,则对当前事务写集合和读集合中的记录解锁并回复事务管理器同意提交的消息;/n步骤3:事务提交/n检查当前事务是否可以提交,若当前事务可以提交,则执行事务提交,将当前事务的所有输出依赖事务的输入依赖数减一,设置当前事务的状态为已提交,回复事务管理器确认提交的消息;/n步骤4:事务回滚/n若当前事务不可以提交,则执行事务回滚,以中止锁模式对当前事务写集合中的记录加锁,先回滚当前事务的输出依赖事务,再回滚当前事务,对当前事务写集合中的记录进行解锁,设置当前事务状态为中止,回复事务管理器确认中止的消息。/n...

【技术特征摘要】
1.一种分布式数据库系统中分布式事务的处理方法,其特征在于,该方法包括以下具体步骤:
步骤1:事务数据访问
以读/写锁模式对记录加锁,检查最新更新该记录的事务是否为已经提交或已经中止,若所述事务为已经提交或已经中止,则继续执行事务,若所述事务不为已经提交或已经中止,则将该事务加入到当前事务的输出依赖集合,并将当前事务的输入依赖数加一;
步骤2:事务准备
事务以提前写/提前读模式对本事务的写集合与读集合中的记录加锁,检查当前事务的输入依赖数是否为零或状态为中止,若当前事务为零或状态为中止,继续执行当前事务,若当前事务不为零或状态为中止,则一直阻塞当前事务;
检查当前事务是否状态为中止或违反隔离性,若当前事务为中止状态或违反隔离性,则回复事务管理器反对提交的消息,若当前事务不为中止状态且不违反隔离性,则对当前事务写集合和读集合中的记录解锁并回复事务管理器同意提交的消...

【专利技术属性】
技术研发人员:郭华周烜蔡乐俞文谦蔡鹏
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海;31

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

1