一种与数据库交互数据的方法和装置制造方法及图纸

技术编号:19023354 阅读:19 留言:0更新日期:2018-09-26 19:03
一种与数据库交互数据的方法和装置,包括:依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段;利用开始标识和结束标识划分原子性操作;按照调用阶段向数据库提交开始标识与结束标识之间的事务;或,按照调用阶段从数据库回滚开始标识与结束标识之间的事务。能够减少对XA资源的加锁时间,进而保障系统处理事务的能力。

【技术实现步骤摘要】
一种与数据库交互数据的方法和装置
本专利技术涉及计算机领域,尤其涉及一种与数据库交互数据的方法和装置。
技术介绍
分布式事务处理是指一个事务可能涉及多个数据库操作。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果,即:全部提交或全部回滚。XA两阶段事务提交协议是X/OPEN组织定义的一个用于分布式事务环境下的两阶段提交协议,用于确保多个参与事务的资源之间的数据一致性和完整性。目前主流的数据库和消息中间件服务器都支持XA协议。在需要提交事务时,调用每个XAResource的XAResource.papare来收集投票结果,如果所有的XAResource都返回XAResource.XA_COMMIT,则可以提交事务,调用XAResource.commit来提交事务。如果在第一阶段中,如果参与事务的XAResource,有一个不同意提交,则调用XAResource.rollback来回滚事务。JTA是JavaTransactionAPI的简称,JTA底层会使用XA两阶段提交协议来与XA资源(数据库、消息中间件等)进行交互。通常的事务提交流程如下:(1)划分原子性操作参见图1是现有技术中划分每个XARResource的原子性工作示意图。用开始标识即XAResource.start和结束标识即XAResource.end划分每个XA资源上的原子性工作。位于XAResource.start和XAResource.end之间的工作,要么提交,要么回滚。事务的原子性是指,事务中包含的程序作为数据库的逻辑工作单元,它所做的对数据修改操作要么全部执行,要么完全不执行。(2)提交事务参见图2是现有技术中两阶段事务提交示意图。在事务需要提交时,调用每个XA资源的XAResource.papare来收集结果,如果所有的XA资源都返回XAResource.XA_COMMIT,则可以提交事务,调用XAResource.commit来向数据库提交事务。(3)回滚事务参见图3是现有技术中两阶段事务回滚示意图。如果在第一阶段中,参与事务的XAResource,有一个不同意提交,则调用XAResource.rollback来从数据库回滚事务。为了确保数据的一致性,XA协议采用严格的两阶段协议来提交事务。由于每次事务提交都需要同XA资源进行多次交互,导致使用XA协议来提交事务的系统事务处理能力较低。严格按照XA两阶段协议来提交事务,每次事务提交时都需要针对每个参与到事务中的XA资源进行投票统计和提交事务两步操作,投票阶段和事务提交阶段会对XA资源中的数据资源加锁以保证数据一致性,加锁的时间越长,越会降低系统处理事务的能力。
技术实现思路
本专利技术实施例提供了一种与数据库交互数据的方法,能够减少对XA资源的加锁时间,进而保障系统处理事务的能力。本专利技术实施例还提供了一种与数据库交互数据的装置,能够减少对XA资源的加锁时间,进而保障系统处理事务的能力。一种与数据库交互数据的方法,包括:依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段;利用开始标识和结束标识划分原子性操作;按照调用阶段向数据库提交开始标识与结束标识之间的事务;或,按照调用阶段从数据库回滚开始标识与结束标识之间的事务。可选的,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1、非XA事务提交和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向非XA资源成功提交非XA事务;阶段2中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向非XA资源提交非XA事务失败;阶段2中向XA资源提交XA事务,在结束标识前回滚XA事务。可选的,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1、非XA事务提交和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向XA资源成功提交非XA事务;阶段2中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向XA资源提交非XA事务失败;阶段2中向XA资源提交XA事务,在结束标识前回滚XA事务。可选的,所述依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段,包括:参与到事务的本地XA资源数目为1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中向XA资源提交XA事务,在结束标识前回滚XA事务。可选的,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于等于1,所述全局事务中参与到事务的远程分支数目为1,确定包括阶段1和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后阶段1中,本地XA资源均返回确定信息;阶段2中,事务的远程分支开始投票,远程XA资源返回确定信息;事务的远程分支向远程XA资源提交XA事务成功;向本地XA资源提交XA事务成功后,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后阶段1中,本地XA资源均返回确定信息;阶段2中,事务的远程分支开始投票,远程XA资源不同意提交;在结束标识前回滚XA事务。一种与数据库交互数据的装置,包括:阶段模块,用于依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段;操作模块,用于利用开始标识和结束标识划分原子性操作;执行模块,用于按照调用阶段向数据库提交开始标识与结束标识之间的事务;或,按照调用阶段从数据库回滚开始标识与结束标识之间的事务。可选的,所述阶段模块,还用于参与到事务的本地XA资源数目大于1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1、非XA事务提交和阶段2的调用阶段;所述执行模块,还用于在开始标识后开始投票,阶段1中XA资源均返回确定信息;向非XA资源成功提交非XA事务;阶段2中向XA资源提交XA事务,在结本文档来自技高网
...

【技术保护点】
1.一种与数据库交互数据的方法,其特征在于,包括:依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段;利用开始标识和结束标识划分原子性操作;按照调用阶段向数据库提交开始标识与结束标识之间的事务;或,按照调用阶段从数据库回滚开始标识与结束标识之间的事务。

【技术特征摘要】
1.一种与数据库交互数据的方法,其特征在于,包括:依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段;利用开始标识和结束标识划分原子性操作;按照调用阶段向数据库提交开始标识与结束标识之间的事务;或,按照调用阶段从数据库回滚开始标识与结束标识之间的事务。2.根据权利要求1所述与数据库交互数据的方法,其特征在于,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1、非XA事务提交和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向非XA资源成功提交非XA事务;阶段2中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向非XA资源提交非XA事务失败;阶段2中向XA资源提交XA事务,在结束标识前回滚XA事务。3.根据权利要求2所述与数据库交互数据的方法,其特征在于,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1、非XA事务提交和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向XA资源成功提交非XA事务;阶段2中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中XA资源均返回确定信息;向XA资源提交非XA事务失败;阶段2中向XA资源提交XA事务,在结束标识前回滚XA事务。4.根据权利要求1所述与数据库交互数据的方法,其特征在于,所述依据全局事务中参与到事务的本地XA资源数目,以及所述全局事务中参与到事务的远程分支数目,确定调用阶段,包括:参与到事务的本地XA资源数目为1,所述全局事务中参与到事务的远程分支数目为0,确定包括阶段1的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中向XA资源提交XA事务,在结束标识前确认完成XA事务提交;所述按照调用阶段从数据库回滚开始标识与结束标识之间的事务,包括:在开始标识后开始投票,阶段1中向XA资源提交XA事务,在结束标识前回滚XA事务。5.根据权利要求1所述与数据库交互数据的方法,其特征在于,所述依据全局事务中参与到事务的本地XA资源的数目,以及所述全局事务中参与到事务的远程分支,确定调用阶段,包括:参与到事务的本地XA资源数目大于等于1,所述全局事务中参与到事务的远程分支数目为1,确定包括阶段1和阶段2的调用阶段;所述按照调用阶段向数据库提交开始标识与结束标识之间的事务,包括:在开始标识后阶段1中,本地XA资源均返回确定信...

【专利技术属性】
技术研发人员:章兴旺杨运良
申请(专利权)人:中国移动通信集团江西有限公司中国移动通信集团公司
类型:发明
国别省市:江西,36

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

1