XA接口标准是事务处理系统与数据库服务器的事务管理接口,CICS事务所作的数据库修改在事务提交(COMMIT)或回撤(ROLLBACK)时由事务处理器通过XA接口向数据库服务器发出提交或回撤请求。由于网络通讯故障随时可能发生,任何发出请求后等待回应的程序都会有失去联系的危险。这种危险发生在发出请求之后,服务器返回应答之前,如果在这个期间网络通讯发生故障,发出请求一方无法收到回应,于是无法判断服务器是否已经成功地处理请求,因为收不到回应可能是请求没有成功地发送到服务器,也可能是服务器处理完成后的回应无法传回请求方。这段时间称为网络通讯的危险期(In-doubt Time)。
无论如何,网络通讯危险期总是存在的,两阶段提交是为了解决这个问题的一种办法。一阶段提交就是事务处理器向数据库服务器发出提交请求,然后等待数据库服务器的回应,收到回应后完成事务的提交,或者服务器返回提交失败的结果就回撤事务。危险期从发出请求开始,到收到回应结束,这段时间中数据库完成数据的修改、日志记录等处理,处理越复杂,危险期就越长。
两阶段提交把事务提交分成两个阶段,第一阶段,事务处理器向数据库服务器发出 " 准备提交 " 请求,数据库收到请求后执行相同的数据修改和日志记录等处理,不同的是处理完成后只是把事务的状态改成 " 可以提交 " ,然后把结果返回给事务处理器。事务处理器收到回应后进入第二阶段,如果在第一阶段内的危险期中发生了故障,事务处理器收不到回应,则认为事务失败,回撤事务。数据库服务器收不到第二阶段的确认提交请求,把 " 可以提交 " 的事务回撤。
两阶段的第二阶段中事务处理器向数据库服务器发出 " 确认提交 " 请求,数据库服务器把事务的 " 可以提交 " 状态改为 " 提交完成 " 状态,然后返回应答。从严格意义上说,两阶段提交并没有完全解决网络通讯危险期的问题,但因为第二阶段的处理很简单,只是修改了事务的状态,与第一阶段相比其处理时间极短,所以危险期极短,发生事务提交故障的可能性几乎不存在。
很多人会问:如果事务处理器只管理一个数据库资源,是不是可以只用一阶段提交的XA接口,如果要管理两个或以上的数据库资源就要使用两阶段提交的XA接口?答案是否定的,用不用两阶段提交不是取决于数据库资源的个数,而是取决于通讯危险期的长短,即事务处理器与数据库服务器间的网络通讯质量。如果事务处理器通过XA接口连接远程数据库,网络通讯质量不高,为了保证事务的完整性,即使只连接一个数据库也应该使用两阶段提交接口。如果事务处理通过XA接口连接局域网上的数据库服务器,连接一个或多个数据库都可以使用一阶段提交接口。
管理多个数据资源的事务处理器中发生的事务可以修改所有相连的数据库,事务提交被分解为多个子事务,分别向各个数据库发出提交请求,这种事务也被称为全局事务。管理单个数据资源的事务处理器中发生的事务只能修改一个数据库,因而不会被分解,这种事务被称为局部事务。虽然多数关于两阶段提交的资料都以全局事务的运作来说明两阶段提交的原理,但两阶段提交与全局事务并没有直接的联系。
同一个事务处理器连接的多个数据资源要使用类型相同的XA接口,不能一些使用一阶段提交接口,另一些却使用两阶段提交接口,如果这样配置,全局事务的提交会失败。两阶段提交的处理过程比一阶段提交复杂,所以效率也较低,大多数企业事务处理系统的事务处理器与数据库服务器运行在同一个计算中心内,以高速而稳定的网络相连接,甚至运行在同一台机器上,这种配置最好使用一阶段提交接口。
这时会引出第二个问题:一台CICS服务器上的应用要连接一个本地的数据库(指运行在同一台机器上或连接在同一个高速的局域网上的数据库),同时也要通过不稳定的网络连接另一个远程数据库,该如何保证CICS应用执行的事务完整性?如果访问远程数据库的响应时间不会过长以至严重地影响整个事务的处理时间,仍然可以采用两阶段提交XA接口。否则应该采用另一种方案,在远程数据库一端安装一个CICS服务器与该数据库通过一阶段提交XA接口相连,本地CICS服务器上的应用要访问远程数据库时通过CICS间的互连机制向远程CICS服务器发出处理请求,由远程CICS服务器上的程序完成处理,整个事务的完整性由CICS的分布式事务管理机制保证,这就已经超出了XA接口的功能范围了,具体的配置请参阅CICS相关文档CICS Intercommunication Guide 。
分享到:
相关推荐
ABB DCS 800xA项目总结资料,关于ABB DCS的组态和学习!!
介绍了关于DVP06XA-H3安装说明的详细说明,提供台达PLC的技术资料的下载。
和泉电气XA系列紧急停止开关产品电路图zip,本资料是关于和泉电气XA系列紧急停止开关产品电路图,更多详细内容请点击下载!
介绍了关于Freelance_800F_extended_with_800xA__internal_presentation的详细说明,提供ABB 800XA的技术资料的下载。
新编“21世纪高职高专系列教材”(理工科用)《高等数学》中关于导数公式.(xa)=axa-1(a是实数)的证明有不妥之处,本文给出两种正确的证明过程.
PL-2303 的官方驱动,3个版本:1.10 、1.12 ...PL-2303 H 和 HX(Rev A) 和 X or XA 这三种型号的不支持 Windows 8、8.1以及10、Windows Server 2016 其他型号的都支持Win10。 另:目前已经有 1.16版,但尚未提供下载。
XAOP一个轻量级的AOP(Android)应用框架,囊括了最实用的AOP应用。心动不如行动,还不赶紧点击,体验一下吧!关于我X系列库快速集成为了方便大家快速集成X系列框架库,我提供了一个空壳模版供大家参考使用: : 特色...
关于 SysBench是一个模块化,跨平台和多线程的基准测试工具,用于评估OS参数,这些参数对于在高负载下运行数据库的系统非常重要。 该基准套件的想法是快速获得有关系统性能的印象,而无需设置复杂的数据库基准,...
本文主要介绍了关于MySQL存储表情报错:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\xA9\x0D\x0A…’的相关解决方法,分享出供大家参考学习,下面话不多说了,来一起看看详细的介绍: ...
"目的 讨论无穷维 Hilbert空间上的算子方程 XA-AX = X p ( 1≤p
注释:JMS:jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体...
关于LaravelLaravel是一个具有表达力,优雅语法的Web应用程序框架。我们认为,发展必须是一种令人愉快的,富有创造力的经历,才能真正实现。 Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦...
主要给大家介绍了关于MySQL存储表情时报错:java.sql.SQLException: Incorrect string value: 'xF0x9Fx92xA9x0Dx0A...'的解决方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
浙江大学关于数模混合仿真的资料,结合三大EDA厂商的工具。
0xB4 一个关于IIS6解析漏洞的小知识 9 0xB5 狗、神、盾 10 0xB6 IIS7 10 0xB7 COOIKE伪造,百度谷歌搜索CMS漏洞 10 0xB8 编辑器后台 10 0xC0附件 10 0xC1 沙盘sandbox 10 0xC2 LOCK数据包 10 0xC3 IISWRITE 10 0xC4 ...
输出:R的保持函数依赖的分解,其中每一个关系模式是关于F在其上投影的3NF。 算法实现: 1)如果R中存在一些不在F中出现的属性,则将它们单独构成一个关系模式,并从模式R中消去; 2)如果F中有一个函数依赖X→...
关于I2C模块的资料,写了I2C的工作原理,已经相关应用
将 HttpMon.exe 复制到硬盘上,并将其添加到Windows的任务计划中,设置为...3.关于日志功能 日志功能可以记录Http监控程序的工作情况,他可以记录什么时候检查过什么页面,什么时候出现了错误,对应操作是什么。
关于C语言中没有合适的类型定义超级大的数,使用字符串可以求多个大数的值,具体算法可以看程序,有些注释不详细的请各位原谅、
一分关于CRC原理的文档,介绍了1位8位4位的算法原理。