当前位置:Gxlcms > 数据库问题 > Mysql数据库分布式事务XA详解

Mysql数据库分布式事务XA详解

时间:2021-07-01 10:21:17 帮助过:42人阅读

   print?
  1. mysql> XA START ‘xatest‘;  
  2. Query OK, 0 rows affected (0.00 sec)  
  3.   
  4. mysql> INSERT INTO test (name,tel) VALUES (‘123‘,‘123‘);  
  5. Query OK, 1 row affected (0.00 sec)  
  6.   
  7. mysql> XA END ‘xatest‘;  
  8. Query OK, 0 rows affected (0.00 sec)  
  9.   
  10. mysql> XA PREPARE ‘xatest‘;  
  11. Query OK, 0 rows affected (0.00 sec)  
  12.   
  13. mysql>   
  14. mysql>   
  15. mysql> XA COMMIT ‘xatest‘;  
  16. Query OK, 0 rows affected (0.00 sec)  

 

 

XA RECOVER 介绍

XA RECOVER 列出所有处于PREPARE状态的XA事务:

 

[python] view plain copy    print?
  1. mysql> XA RECOVER;  
  2. +----------+--------------+--------------+--------+  
  3. | formatID | gtrid_length | bqual_length | data   |  
  4. +----------+--------------+--------------+--------+  
  5. |        1 |            6 |            0 | xa1000 |  
  6. +----------+--------------+--------------+--------+  
  7. 1 row in set (0.00 sec)  

注释:

 

1. formatID 是事务xid的formatID部分。

2. gtrid_length 是xid的gtrid部分的长度,以字节为单位。

3. bqual_length 是xid的bqual部分的长度,以字节为单位。

4. data 是xid的gtrid部分和bqual部分的串联。

 

    在用一个客户端环境下,XA事务和本地(非XA)事务互相排斥,如果已经发布了XA START来开启一个事务,则本地事务不会被启动,知道XA事务被提交或者被回滚为止;相反的,如果已经使用START TRANSACTION启动一个本地事务,则XA语句不能被使用,直到该事务被提交或者回滚为止,而且XA事务仅仅被InnoDB存储引擎支持。

    如果XA事务达到PREPARE状态时MySQL服务器宕机,当服务器重启后,服务器会回滚任何未完成的XA事务,即使该事务已经达到了PREPARE状态;如果客户端连接终止,而服务器继续运行,服务器将回滚任何未完成的XA事务,即使该事务已经达到PREPARED状态。

 

Mysql数据库分布式事务XA详解

标签:本地   pytho   生成   0.00   nsa   引擎   本地事务   重启   lan   

人气教程排行