mysql 跨庫事務XA

來源:互聯網
上載者:User

標籤:public   end   src   like   als   圖片   art   .com   執行   

前一段時間在工作中遇到了跨庫事務問題,後來在網上查詢了一下,現在做一下整理和總結。

1、首先要確保mysql開啟XA事務支援SHOW VARIABLES LIKE ‘%XA%‘

如果innodb_support_xa的值是ON就說明mysql已經開啟對XA事務的支援了。 如果不是就執行:SET innodb_support_xa = ON
<?PHP$dbtest1 = new mysqli("172.20.101.17","public","public","dbtest1")or die("dbtest1 串連失敗");$dbtest2     = new mysqli("172.20.101.18","public","public","dbtest2")or die("dbtest2 串連失敗");//為XA事務指定一個id,xid 必須是一個唯一值。$xid = uniqid("");//兩個庫指定同一個事務id,表明這兩個庫的操作處於同一事務中$dbtest1->query("XA START ‘$xid‘");//準備事務1$dbtest2->query("XA START ‘$xid‘");//準備事務2try {    //$dbtest1    $return = $dbtest1->query("UPDATE member SET name=‘唐大麥‘ WHERE id=1") ;    if($return == false) {       throw new Exception("庫[email protected]執行update member操作失敗!");    }    //$dbtest2    $return = $dbtest2->query("UPDATE memberpoints SET point=point+10 WHERE memberid=1") ;    if($return == false) {       throw new Exception("庫[email protected]執行update memberpoints操作失敗!");    }    //階段1:$dbtest1提交準備就緒    $dbtest1->query("XA END ‘$xid‘");    $dbtest1->query("XA PREPARE ‘$xid‘");    //階段1:$dbtest2提交準備就緒    $dbtest2->query("XA END ‘$xid‘");    $dbtest2->query("XA PREPARE ‘$xid‘");    //階段2:提交兩個庫    $dbtest1->query("XA COMMIT ‘$xid‘");    $dbtest2->query("XA COMMIT ‘$xid‘");} catch (Exception $e) {    //階段2:復原    $dbtest1->query("XA ROLLBACK ‘$xid‘");    $dbtest2->query("XA ROLLBACK ‘$xid‘");    die($e->getMessage());}$dbtest1->close();$dbtest2->close();?>

XA的效能很低。一個資料庫的事務和多個資料庫間的XA事務效能對比可發現,效能差10倍左右

 

mysql 跨庫事務XA

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.