mysql事务语句格式_mysql8 参考手册--XA事务SQL语句

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

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

XA END xid[SUSPEND [FOR MIGRATE]]

XA PREPARE xid

XA COMMIT xid[ONE PHASE]

XA ROLLBACK xid

XA RECOVER[CONVERT XID]

对于XA START,JOIN和 RESUME子句可以识别,但无效。

对于XA END该SUSPEND [FOR MIGRATE] 子句是公认的,但无效。

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

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 是一个无符号整数。

该gtrid和 bqual值以字节为MySQL服务器的底层XA支持例程解释。但是,在解析包含XA语句的SQL语句时,服务器将使用某些特定的字符集。为了安全起见,写gtrid和 bqual十六进制字符串。

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

XA START xid以给定xid值启动XA交易。每个XA事务必须具有唯一的 xid值,因此该值当前不能被另一个XA事务使用。唯一性使用gtrid和 bqual值进行评估。XA事务的以下所有XA语句必须使用与xid该XA START语句中给定的值相同的值 指定。如果使用这些语句中的任何一条xid,但指定的值与某些现有XA事务不对应,则将发生错误。

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

该XA RECOVER语句返回PREPARED状态下MySQL服务器上那些XA事务的信息 。(请参见 第13.3.8.2节“ XA事务状态”。)输出包括服务器上每个此类XA事务的行,而不管是哪个客户端启动它。

XA RECOVER需要 XA_RECOVER_ADMIN特权。此特权要求防止用户发现他们自己以外的未完成的XA事务的XID值。它不会影响XA事务的正常提交或回滚,因为启动它的用户知道其XID。

XA RECOVER输出行如下所示(对于例如 xid由部件的值 'abc','def'和 7):

mysql> XA RECOVER;

+----------+--------------+--------------+--------+

| formatID | gtrid_length | bqual_length | data |

+----------+--------------+--------------+--------+

| 7 | 3 | 3 | abcdef |

+----------+--------------+--------------+--------+

输出列具有以下含义:

formatID是formatID交易的 一部分 xid

gtrid_length在的字节长度gtrid的部分 xid

bqual_length在的字节长度bqual的部分 xid

data是的gtrid和 bqual部分 的串联 xid

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值