这篇文章主要为大家展示了“MySQL 5.7中对XA支持的改进有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL 5.7中对XA支持的改进有哪些”这篇文章吧。
背景
,XA才能解决了当跨分布式资源情况下能在单个事务中保留酸属性的问题。资源本身可以是其他MySQL服务器,甚至可以其他是不同的数据库技术.XA标准描述了全局事务管理器和本地资源管理器之间的交互。
,如才能引言中所述,MySQL 5.0引入了XA支持,从而增加了参与全局事务的能力.XA支持可以提供可访问事务资源的资源管理器和能够在全局事务中协调事务的事务管理器.MySQL的XA实现了让MySQL服务器来充当资源管理器,而连接到MySQL服务器的客户端执行事务管理器的任务。
,XA才能使用两阶段提交协议,其中第一阶段是发出提交请求,然后再进行实际的提交。全局事务的各个分支完成执行后,将启动两阶段提交协议:
- <李>
在第一阶段,事务管理器向全局事务中涉及的所有分支发出准备提交的消息。在资源管理器确认已准备好提交之前,它会将操作的记录结果记录并保存,为第二阶段执行实际的提交做准备。
李> <李>在第二阶段,事务管理器如果从所有涉及的分支接收到确定的响应,则通知它们提交。但是,如果任何一个分支的答复为否,则会通知所有分支执行回滚。
李>,,,,一个事务管理器与多个资源管理器进行交互,以处理全局事务中的单个事务/分支。以下图描述了涉及一个资源管理器中的XA事务.XA事务的语句以XA关键字,要执行的操作和唯一标识符开头。在下面的示例中,字符串“死者纪念雕柱”表示全局事务标识符。除了全局事务标识符之外,还可以为XA事务指定分支标识符和格式ID。分支标识符用于标识本地事务,格式ID指定前两个组件使用的格式。
<强> XA启动/BEGIN >强启动事务并定义其全局事务标识符。
<强> XA最终获得强>指定活动事务的结束。
<强> XA PREPARE 强>为事务的承诺做准备。
<强> XA提交(一阶段),强>提交并结束一个已准备的事务。
如果使用“单<强>阶段”强>选项,则准备和提交将在结束事务的单个步骤中执行。
<强> XA回滚,回滚强>并终止事务。
<强> XA恢复>强显示有关所有<强> 强>准备事务的信息。
让我们看一下上述XA事务的状态之间转换。
<强> XA开始强>将事务置于活动状态,一旦所有语句由活动事务执行后,就会发出<强> XA_END >强语句,使该事务处于空闲状态。对于空闲事务,可以发出<强> XA准备强>或<强> XA提交> <李>
XA恢复mechansim已经扩展,这样当一个连接终止,准备的XA事务的事务缓存和标志着InnoDB特别。这允许客户端恢复准备XA事务,然后提交/回滚。李李
> <>XA事务现在binlogged在两个阶段使用两种不同的GTIDs允许交叉又是事务;期间,<强> 强>第一阶段,当XA准备发行,交易记录到这一点在二进制日志,可以确定by <代码类=拔淖帧? XA_prepare_log_event只代码>中,<强> >强,第二阶段当发出XA提交/回滚时,交易的第二部分是写入二进制日志。由于XA准备是持久的,,XA事务不回滚和survives 重启服务器或客户端断开连接。客户端可以执行XA提交/回滚和二进制日志仍然是最新的。null