mysql跨库事务XA操作示例

  

本文实例讲述了mysql跨库事务XA操作。分享给大家供大家参考,具体如下:

  

前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结。

  

1,首先要确保mysql开启XA事务支持

        显示变量如' % XA % '      之前      

 mysql跨库事务XA操作示例

  

如果innodb_support_xa的值是在就说明mysql已经开启对XA事务的支持了。

  

如果不是就执行:

        设置innodb_support_xa=>   & lt; & # 63; PHP   dbtest1美元=new mysqli(“172.20.101.17”、“公开”、“公开”、“dbtest1”)或死亡(“dbtest1连接失败”);   dbtest2美元=new mysqli(“172.20.101.18”、“公开”、“公开”、“dbtest2”)或死亡(“dbtest2连接失败”);//为XA事务指定一个id, xid必须是一个唯一值。   $ xid=函数(" ");//两个库指定同一个事务id、表明这两个库的操作处于同一事务中   美元dbtest1→查询(“XA开始xid美元”);//准备事务1   美元dbtest2→查询(“XA开始xid美元”);//准备事务2   尝试{//dbtest1美元   返回=美元dbtest1→查询(“更新成员集名称=疤拼舐蟮膇d=1”);   如果美元返回==false) {   抛出新的异常(“库dbtest1@172.20.101.17执行更新成员操作失败!”);   }//dbtest2美元   返回=美元dbtest2→查询(“更新memberpoints设定值+ 10=点memberid=1”);   如果美元返回==false) {   抛出新的异常(“库dbtest1@172.20.101.18执行更新memberpoints操作失败!”);   }//阶段1:$ dbtest1提交准备就绪   美元dbtest1→查询(“XA xid美元”);   美元dbtest1→查询(“XA准备xid美元”);//阶段1:$ dbtest2提交准备就绪   美元dbtest2→查询(“XA xid美元”);   美元dbtest2→查询(“XA准备xid美元”);//阶段2:提交两个库   美元dbtest1→查询(“XA提交xid美元”);   美元dbtest2→查询(“XA提交xid美元”);   }   捕获(异常$ e) {//阶段2:回滚   美元dbtest1→查询(“XA回滚xid美元”);   美元dbtest2→查询(“XA回滚xid美元”);   死($ e→getMessage ());   }   美元dbtest1→close ();   美元dbtest2→close ();   & # 63;比;      之前      

XA的性能很低。一个数据库的事务和多个数据库间的XA事务性能对比可发现,性能差10倍左右

  

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL事务操作技巧汇总》、《MySQL查询技巧大全》,《MySQL存储过程技巧大全》,《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

  

希望本文所述对大家MySQL数据库计有所帮助。

mysql跨库事务XA操作示例