官网地址:MySQL :: MySQL 5.7 Reference Manual :: 13.3.7.1 XA Transaction SQL Statements
欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.
若要在mysql中执行xa事务,请使用以下语句:
XA {START|BEGIN} xid [JOIN|RESUME]XA END xid [SUSPEND [FOR MIGRATE]]XA PREPARE xidXA COMMIT xid [ONE PHASE]XA ROLLBACK xidXA RECOVER [CONVERT XID]
为了XA START ……JOIN
和 RESUME
条款得到承认,但没有效果。
为了XA END …SUSPEND [FOR MIGRATE]
条款得到承认,但没有效果。
每一个xa语句都以XA
关键词,大多数都需要xid
价值。安xid
是一个xd事务标识符。它指示语句适用于哪个事务。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服务器的底层xd支持例程。然而,在解析包含xd语句的SQL语句时,服务器使用某些特定的字符集。为了安全起见gtrid
和 bqual
作为魔法弦。
xid
值通常由事务管理器生成。一个tm生成的值必须不同于其他TMS生成的值。一个给定的tm必须能够识别自己的xid
表中的数值 XA RECOVER 声明。
XA START xid 启动一个与给定的xid
价值。每个xa事务必须有唯一的 xid
值,所以当前的值不能被另一个x事务使用。使用gtrid
和 bqual
价值观。必须使用相同的方式来指定所有以下的xa语句xid
的价值 XA START 声明。如果你使用其中任何一个语句但指定xid
不对应于某些现有的xr事务的值,会发生错误。
可以将一个或多个xd事务作为同一全局事务的一部分。给定全局事务中的所有x事务必须使用相同的gtrid
价值xid
价值。因此,gtrid
值必须是全局唯一的,这样就不会有任何含糊不清的问题:给定的x事务是哪个全局事务的一部分。… bqual
一部分 xid
对于全局事务中的每一个x事务,值必须是不同的。(要求bqual
值的不同是当前mysql实现的一个局限。它不属于xa规范的一部分。)
…XA RECOVER 声明返回了在mysql服务器上的那些xd事务的信息。 PREPARED
国家。(见 Section 13.3.7.2, “XA Transaction States” .)输出包括服务器上每一个这样的xd事务的行,不管哪个客户机启动它。
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值可能包含不可打印的字符。截至我的5.7.5,XA RECOVER 可选择的CONVERT XID
使客户端能够请求十六进制的XID值的条款。