【技术实现步骤摘要】
本申请涉及分布式数据处理领域,尤其涉及一种分布式事务处理方法及系统。
技术介绍
分布式事务通常包含多个本地事务分支,每个本地事务分支可以对相应的数据库进行操作。多个分布式事务可以在一个数据库并发执行,每个分布式事务可能需要对数据库的多个表执行插入(INSERT)、删除(DELETE)、修改(UPDATE)、查询(SELECT)等操作。在这种情况下,数据库需要保证每一分布式事务在其对数据库的修改操作提交前,该修改所对应的数据行对其它分布式事务是不可见的;或者说,不能让其它分布式事务读取到该分布式事务的中间状态,保障分布式事务的隔离性。例如,对于A账户向B账户转账100元的业务,实现该业务可能需要先向B账户增加100元,再从A账户减去100元;在这种情况下,不能让其它事务(例如,账户查询事务)看到B账户金额已经增加,但A账户还没有扣款的状态。否则,一旦对A账户的扣款动作执行失败,B账户中增加的100元可能已经被其它事务减掉,因此将出现针对B账户的回滚操作失败的情况。解决上述分布式事务的隔离性问题的技术包括:数据库锁、写时复制、多版本控制等。现有的分布式关系型数据库系统,例如MySQL,通常采用XA两阶段提交协议实现分布式事务的管理,并采用单机数据库锁来进行分布式事务的并发控制,以保障分布式事务的隔离性。XA两阶段提交协议的第一阶段是表决阶段,在该阶段,所有参与者都将本事务分支能否成功执行的反馈信息发送给协调者;第二阶段是执行阶段,在该阶段,协调者根据所有参与者发送的反馈信息,通知所有参与者步调一致地在所有事务分支上提交,或者在所
有事务分支上 ...
【技术保护点】
一种分布式事务处理方法,其特征在于,该方法包括:分布式事务的各个事务分支所对应的事务分支处理单元接收到事务分支SQL语句后,将其发送至隔离控制器进行加锁操作;隔离控制器从数据库查询得到与所述事务分支SQL语句相对应的各数据行,并从数据库的事务锁表查询得到各数据行所对应的加锁记录后,通过向事务锁表写入加锁记录,为所述各数据行中所述分布式事务尚未加锁的数据行加锁;所述加锁记录中包含所述分布式事务的全局事务标识符;加锁操作成功后,事务分支处理单元执行所述事务分支SQL语句;事务分支处理单元接收到事务分支提交指令或事务分支回滚指令后,指示隔离控制器根据全局事务标识符从事务锁表中删除所述全局事务标识符所对应的加锁记录。
【技术特征摘要】
1.一种分布式事务处理方法,其特征在于,该方法包括:分布式事务的各个事务分支所对应的事务分支处理单元接收到事务分支SQL语句后,将其发送至隔离控制器进行加锁操作;隔离控制器从数据库查询得到与所述事务分支SQL语句相对应的各数据行,并从数据库的事务锁表查询得到各数据行所对应的加锁记录后,通过向事务锁表写入加锁记录,为所述各数据行中所述分布式事务尚未加锁的数据行加锁;所述加锁记录中包含所述分布式事务的全局事务标识符;加锁操作成功后,事务分支处理单元执行所述事务分支SQL语句;事务分支处理单元接收到事务分支提交指令或事务分支回滚指令后,指示隔离控制器根据全局事务标识符从事务锁表中删除所述全局事务标识符所对应的加锁记录。2.根据权利要求1所述的方法,其特征在于,所述加锁记录中还包含如下作为所述事务锁表的唯一索引的字段:数据行所属表的表名,数据行的主键值和互斥锁标记;对数据行加互斥锁时,将所述加锁记录中的互斥锁标记字段置为预先设定的互斥锁标记值。3.根据权利要求2所述的方法,其特征在于,采用如下方式为数据行加共享锁:如果当前没有其它分布式事务为对应数据行加共享锁,则通过向事务锁表写入两行加锁记录为对应数据行加共享锁:其中一行加锁记录的互斥锁标记字段的值为所述预先设定的互斥锁标记值,另一行加锁记录的互斥锁标记字段的值为所述全局事务标识符;如果其它分布式事务已为对应数据行加共享锁,则通过向事务锁表写入一行加锁记录为对应数据行加共享锁,该加锁记录的互斥锁标记字段的值为所述全局事务标识符。4.根据权利要求2所述的方法,其特征在于,该方法还包括:事务分支处理单元接收到读已提交查询语句后,将其发送至隔离控制器;隔离控制器从数据库查询得到与所述读已提交查询语句相对应的各数据行,并从数据库的事务锁表查询得到各数据行所对应的加锁记录后,判断其它分布式事务是否已为所述读已提交查询语句相对应的各数据行中的一行或多行加互斥锁;如果否,则将所述读已提交查询语句相对应的各数据行返回给事务分支处理单元;所述读已提交查询语句为包含用于声明不读取其它分布式事务的中间状态的注释信息的查询语句。5.根据权利要求1所述的方法,其特征在于,该方法还包括:所述分布式事务的提交方向事务管理器注册所述分布式事务,在分布式事务注册后,向事务分支处理单元发送所述事务分支SQL语句;接收到所述事务分支SQL语句之后、将所述事务分支SQL语句发送至隔离控制器之前,事务分支处理单元向事务管理器注册所述事务分支SQL语句所对应的事务分支;执行所述事务分支SQL语句后,事务分支处理单元向所述分布式事务的提交方、或向所述分布式事务的提交方和事务管理器汇报事务分支的执行状态。6.根据权利要求5所述的方法,其特征在于,该方法还包括:所述分布式事务的提交方通过向事务管理器发送全局事务提交指令对所述分布式事务进行提交;所述分布式事务的提交方通过向事务管理器发送全局事务回滚指令对所述分布式事务进行回滚;事务管理器接收到全局事务提交指令后向各事务分支处理单元发送所述事务分支提交指令;事务管理器接收到全局事务回滚指令后、或在预先设定的时间内未收到所述分布式事务的提交方发送的全局事务提交指令时,向各事务分支处理单元发送所述事务分支回滚指令。7.一种分布式事务处理系统,其特征在于,该系统中包括:分布式事务的各个事务分支所对应的事务分支处理单元,...
【专利技术属性】
技术研发人员:张松树,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。