10bet官方网站文档家里
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载 从本手册中摘录

13.3.7 xa交易

支持XA.事务可用于Innodb.存储引擎。MySQL XA实现基于X/Open CAE文档分布式事务处理:XA规范。本文档由开放组发布,可用http://www.opengroup.org/public/pubs/catalog/c193.htm。描述了当前XA实现的限制第13.3.7.3节,“XA交易的限制”

在客户端,没有特殊要求。MySQL Server的XA界面由以开头的SQL语句组成XA.关键词。MySQL客户端程序必须能够发送SQL语句并理解XA语句接口的语义。它们不需要与最近的客户端库链接。旧客户端库也有效。

在MySQL连接器中,MySQL Connector/J 5.0.0及更高版本直接支持XA,通过类接口为您处理XA SQL语句接口。

XA支持分布式事务,即能够允许多个单独的事务资源参与全局交易。交易资源通常是RDBMSS,但可能是其他类型的资源。

全局事务涉及几个本身是事务性的操作,但它们要么作为一个组成功完成,要么作为一个组回滚。本质上,这扩展了ACID属性一个水平这样多个ACID事务就可以作为同样具有ACID属性的全局操作的组件一起执行。(与非分布式事务一样,可序列化的如果您的应用程序对读现象敏感,可能是优选的。可重复读取可能不足以用于分布式交易。)

分布式事务的一些示例:

  • 应用程序可以充当与RDBMS的消息传递服务相结合的集成工具。该应用程序确保交易消息发送,检索和处理的交易,也涉及交易数据库全局事务。你可以想到这一点交易电子邮件。

  • 应用程序执行涉及不同数据库服务器的操作,例如MySQL服务器和Oracle服务器(或多个MySQL服务器),其中涉及多个服务器的操作必须作为全局事务的一部分发生,而不是每台服务器本地的单独事务。

  • 银行通过自动柜员机(ATM)在RDBMS中保留账户信息并分销并收到资金。有必要确保在帐户中正确反映ATM动作,但这不能单独使用RDBMS完成。全球事务管理器集成了ATM和数据库资源,以确保金融交易的整体一致性。

使用全局事务的应用程序涉及一个或多个资源管理器和事务管理器:

  • 资源管理器(RM)提供对事务资源的访问。数据库服务器是一种资源管理器。必须可以提交或回滚由RM管理的交易。

  • 事务管理器(TM)协调是全局交易的一部分的交易。它与处理每个交易的RMS通信。全局交易中的个人交易是分支机构全局事务的。全局事务及其分支由后面描述的命名方案标识。

XA的MySQL实现使MySQL服务器能够充当资源管理器,在全局事务中处理XA事务。一个连接到MySQL服务器的客户端程序充当事务管理器。

要执行全局交易,有必要知道涉及哪些组件,并将每个组件带到可以提交或回滚时的点。根据每个组件报告其成功的能力的报告,它们必须全部提交或回滚作为原子组。也就是说,所有组件都必须提交,或者所有组件都必须回滚。要管理全局事务,有必要考虑任何组件或连接网络可能会失败。

执行全局事务的过程使用两阶段提交(2PC)。在执行由全局交易的分支执行的操作之后发生这种情况。

  1. 在第一阶段,制备所有分支。也就是说,他们被TM告诉了准备好提交。通常,这意味着管理分支的每个RM记录稳定存储中分支的操作​​。分支表示它们是否能够这样做,并且这些结果用于第二阶段。

  2. 在第二阶段,TM告诉RMS是否提交或回滚。如果所有分支机构在编写他们可以提交时指示的所有分支机构都会被告知所有分支机构。如果在准备它无法提交时指示的任何分支,则告知所有分支机构退回。

在某些情况下,全局事务可能使用单阶段提交(1PC)。例如,当事务管理器发现一个全局事务仅由一个事务资源(即单个分支)组成时,可以告诉该资源同时准备和提交。