基于mysql和php的分布式事务处理1,基于MySQL和PHP的分布式事务处理

PHP(超级文本预处理语言)是一种基于服务器端、执行效率高且易于开发的HTML内嵌式语言,是用户生成动态网页的工具之一[1].MySQL是全球最受欢迎的小型开放源码的关系型数据库管理系统,其体积小、速度快、总体拥有成本低[2].很多基于PHP技术开发的中小型网站都采用MySQL作为其后台数据库.当数据库分布在几个远程服务器上时,会增加由于网络或通信故障所致错误的可能性.因此,探讨与实现基于PHP和MySQL的分布式事务处理方法,以保证分布在多个站点上数据的正确性和一致性,对共享与协作要求日益增加的现代商业信息系统具有十分重要的意义.1分布式事务处理1.1分布式事务处理模型分布式事务是指一个事务可能涉及多个异地数据库操作,由于数据的分散性,使得事务在多个数据库上执行,即分布式事务的执行也是分布的.分布式数据库系统中的一次事务处理被称为全局事务,全局事务是由若干个不同节点上的子事务组成,这些子事务不仅要与本地其他事务协调,还要与全局事务所产生的其他子事务协调.分布式事务处理模型如图1所示,其包括应用程序(AP)、事务管理器(TM)和资源管理器(RM).应用程序定义事务边界和构成该事务的特定于应用程序的操作;事务管理器包括用于运行用户应用程序的事务处理监视器,其向事务指定标识,监视用户应用程序的进程,并负责处理事务的完成或失败.当用户应用程序请求提交或回滚时,事务管理器使用事务处理监视器提供的应用程序接口在所有参与的资源管理间协调提交或回滚;常见的资源管理器是数据库.XA是事务管理器与资源管理器之间的接口规范,XA接口规范提供事务管理器与资源管理器之间的双向通信.事务管理器通过XA接口规范通知数据库事务的开始、结束、提交以及回滚等.图1分布式事务处理模型Fig.1Modelofdistributedtransactionprocessing1.2两阶段提交协议与XA接口规范1.2.1两阶段提交协议当使用多个资源合作解决一个问题时,必须使得这些资源在一个事务中进行合作.为实现这一目的,将事务提交分为两个阶段进行.(1)表决阶段,目的是形成一个共同的决定.事务开始时,事务管理器向事务相关数据库发送准备提交各分支事务的信息,以确认是否所有相关数据库均可提交各自的事务分支.当数据库收到预提交信息后,若其可以提交事务分支,则将对该事务分支所做的操作记录下来,并返回给事务管理器一个同意提交的应答,此时数据库将不再对该事务分支做任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作尚未释放,处于上锁状态.如果由于某种原因,数据库无法提交其事务分支,将回滚所有操作,释放共享资源,并返回给事务管理器失败应答.(2)执行阶段,目的是实现第一阶段的决定.若所有数据库都可以提交,则事务管理器将要求所有数据库做正式提交,这样该全局事务被提交.而若任一数据库预提交返回失败,则事务管理器将要求所有其他数据库回滚其操作,这样该全局事务被回滚.图2(a)和(b)分别示出了两阶段事务提交成功和失败回滚的模型[4-5].图2两阶段提交模型Fig.2Modeloftwo-phasecommit1.2.2XA接口规范XA接口规范的基础是两阶段提交协议[6].对一个全局事务,应用程序首先通知事务管理器开始一个全局事务,事务管理器通过XA接口规范通知数据库开始事务,然后应用程序对数据库管理的资源进行操作,数据库系统记录事务对本地资源的所有操作,操作完成后事务管理器通过XA接口规范通知数据库操作完成,并记录应用程序操作过哪些数据库,即事务分支.应用程序根据具体操作情况通知事务管理器提交全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值