Mysql跨数据库事务
跨庫事務(wù)問題
在一個mysql實(shí)例中,現(xiàn)有A庫和B庫,在一個事務(wù)里同時向兩庫各表插入一條數(shù)據(jù),這時就涉及一個事務(wù)跨不同庫的問題
1、首先要確保mysql開啟XA事務(wù)支持
SHOW VARIABLES LIKE ‘%XA%’
2.如果innodb_support_xa的值是ON就說明mysql已經(jīng)開啟對XA事務(wù)的支持了。
如果不是就執(zhí)行:
SET innodb_support_xa = ON
XA的性能很低。一個數(shù)據(jù)庫的事務(wù)和多個數(shù)據(jù)庫間的XA事務(wù)性能對比可發(fā)現(xiàn),性能差10倍左右
https://blog.csdn.net/soonfly/article/details/70677138
這里先聲明兩個概念:
資源管理器(resource manager):用來管理系統(tǒng)資源,是通向事務(wù)資源的途徑。數(shù)據(jù)庫就是一種資源管理器。資源管理還應(yīng)該具有管理事務(wù)提交或回滾的能力。
事務(wù)管理器(transaction manager):事務(wù)管理器是分布式事務(wù)的核心管理者。事務(wù)管理器與每個資源管理器(resource
manager)進(jìn)行通信,協(xié)調(diào)并完成事務(wù)的處理。事務(wù)的各個分支由唯一命名進(jìn)行標(biāo)識。
mysql在執(zhí)行分布式事務(wù)(外部XA)的時候,mysql服務(wù)器相當(dāng)于xa事務(wù)資源管理器,與mysql鏈接的客戶端相當(dāng)于事務(wù)管理器。
分布式事務(wù)原理:分段式提交
分布式事務(wù)通常采用2PC協(xié)議,全稱Two Phase Commitment Protocol。該協(xié)議主要為了解決在分布式數(shù)據(jù)庫場景下,所有節(jié)點(diǎn)間數(shù)據(jù)一致性的問題。分布式事務(wù)通過2PC協(xié)議將提交分成兩個階段:
prepare;
commit/rollback
階段一為準(zhǔn)備(prepare)階段。即所有的參與者準(zhǔn)備執(zhí)行事務(wù)并鎖住需要的資源。參與者ready時,向transaction manager報(bào)告已準(zhǔn)備就緒。
階段二為提交階段(commit)。當(dāng)transaction manager確認(rèn)所有參與者都ready后,向所有參與者發(fā)送commit命令。
如下圖所示:
總結(jié)
以上是生活随笔為你收集整理的Mysql跨数据库事务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android开机画面在uboot里吗,
- 下一篇: linux cmake编译源码,linu