mysql事务sql语句_MySQL的SQL语句 -事务性语句和锁定语句(7)- XA 事务 SQL 语句

本文详细介绍了MySQL中如何使用XA事务,包括XA START、END、PREPARE、COMMIT、ROLLBACK和RECOVER等语句,以及XID的结构和使用。XID由gtrid、bqual和formatID三部分组成,用于确保事务的唯一性。XARECOVER语句用于获取服务器上处于PREPARED状态的XA事务信息。
摘要由CSDN通过智能技术生成

XA 事务 SQL 语句

要在 MySQL 中执行 XA 事务,请使用以下语句:

1. XA {START|BEGIN} xid [JOIN|RESUME]

2.

3. XA END xid [SUSPEND [FOR MIGRATE]]

4.

5. XA PREPARE xid

6.

7. XA COMMIT xid [ONE PHASE]

8.

9. XA ROLLBACK xid

10.

11. XA RECOVER [CONVERT XID]

对于 XA START,可以识别 JOIN 和 RESUME 子句,但不起作用。

对于 XA END,可以识别 SUSPEND [For MIGRATE] 子句,但不起作用。

每个 XA 语句都以 XA 关键字开头,并且大多数语句都需要 xid 值。xid 是 XA 事务标识符。它指示语句应用于哪个事务。xid 值由客户端提供,或由 MySQL 服务器生成。xid 值有一到三个部分:

1.xid: gtrid [, bqual [, formatID ]]

gtrid 是一个全局事务标识符,bqual 是一个分支限定符,formatID 是一个数字,用于标识 gtrid 和 bqual 值所使用的格式。如语法所示,bqual 和 formatID 是可选的。如果未指定 bqual 值,默认值为 ''。如果未给定,formatID 默认值为 1。

gtrid 和 bqual 必须是字符字面量,每个字符的长度都不超过64个字节(不是字符)。可以用多种方式指定 gtrid 和 bqual。可以使用带引号的字符串 ('ab')、十六进制字符串 (X'6162', 0x6162) 或位值 (b'nnnn')。

formatID 是无符号整数。

MySQL 服务器的底层 XA 支持例程以字节表示 gtrid 和 bqual 值。然而,当一个包含 XA 语句的 SQL 语句被解析时,服务器使用一些特定的字符集。为了安全起见,请将 gtrid 和 bqual 写成十六进制字符串。

xid 值通常由事务管理器生成。一个 TM 产生的值必须与其他 TM 产生的值不同。给定的 TM 必须能够识别 XA RECOVER 语句返回的值列表中的自己的 xid 值。

XA START xid 使用给定的 xid 值启动 XA 事务。每个 XA 事务必须有一个惟一的 xid 值,因此该值当前不能被另一个 XA 事务使用。使用 gtrid 和 bqual 值评估唯一性。必须使用与 XA START 语句中给定的值相同的 xid 值来指定 XA 事务的所有后续 XA 语句。如果使用这些语句,但指定的 xid 值与现有的 XA 事务不对应,则会发生错误。

同一全局事务可以有一个或多个 XA 事务。给定全局事务中的所有 XA 事务都必须在 xid 值中使用相同的 gtrid 值。因此,gtrid 值必须是全局唯一的,这样就不会混淆给定 XA 事务属于哪个全局事务。对于全局事务中的每个 XA 事务,xid 值的 bqual 部分必须是不同的。(bqual 值不同的要求是当前 MySQL XA 实现的一个限制。它不是 XA 规范的一部分。)

XA RECOVER 语句返回 MySQL 服务器上处于 PREPARED 状态的 XA 事务的信息。服务器上每个这样的 XA 事务都会包含在输出行中,而不管是哪个客户端启动的。

XA RECOVER 需要 XA_RECOVER_ADMIN 权限。此权限要求阻止用户发现除自己的事务外未完成的已准备好的 XA 事务的 XID 值。它不影响 XA 事务的正常提交或回滚,因为启动它的用户知道它的 XID。

XA RECOVER 输出行如下所示(例如,xid 值由 'abc', 'def' 和 7 组成):

1. mysql> XA RECOVER;

2. +----------+--------------+--------------+--------+

3. | formatID | gtrid_length | bqual_length | data |

4. +----------+--------------+--------------+--------+

5. | 7 | 3 | 3 | abcdef |

6. +----------+--------------+--------------+--------+

输出列具有以下含义:

● formatID 是事务 xid 的 formatID 部分

● gtrid_length 是 xid 的 gtrid 部分的长度(以字节为单位)

● bqual_length 是 xid 的 bqual 部分的长度(以字节为单位)

● data 是 xid 的 gtrid 和 bqual 部分的组合

XID 值可能包含不可打印的字符。XA RECOVER 允许一个可选的 CONVERT XID 子句,以便客户端可以请求十六进制的 XID 值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值