簡體   English   中英

為什么 XA 事務用於分布式事務

[英]why XA transaction for distributed transaction

許多 DBMS 使用稱為“XA”的特殊 2PC 協議進行分布式事務。 為什么有人會使用 XA? 對我來說,XA 不能保證萬一失敗的任何事情:

在XA中,事務管理器(TM)會在第一階段告訴所有DBMS准備,如果都准備好了,TM會告訴他們在第二階段全部提交,否則如果其中任何一個失敗,TM會告訴其他人回滾。

如果第一階段所有的DBMS都准備好了,如果有人在第二階段提交失敗怎么辦? 在這種情況下,整個事務將失敗,所有其他事務將不得不回滾(第三階段?),使第一階段變得毫無意義 也就是說,即使說所有的DBMS都准備好了,第一階段也不能做任何保證(雖然它確實增加了一些成功的可能性)。

雖然你的問題似乎比實際更理論,但是

你是對的(來自https://dev.mysql.com/doc/refman/8.0/en/xa-restrictions.html

如果服務器在執行 XA PREPARE、XA COMMIT、XA ROLLBACK 或 XA COMMIT ... ONE PHASE 語句的過程中意外停止,則服務器可能無法恢復到正確狀態,從而導致服務器和二進制日志處於不一致的狀態。

但是 - 那是關於 MySQL 並用這個問題標記了這個問題:)

如果你想深入挖掘,我認為你應該跳轉到https://dba.stackexchange.com/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM