有谁知道为什么Mysql需要可序列化的隔离级别来实现XA事务的ACID属性,或者如果使用可重复读取和XA会丢失什么?
然而,对于分布式 交易,你必须使用 SERIALIZABLE隔离级别为 实现ACID属性。这就够了 使用REPEATABLE READ来获取 非分销交易,但不是 对于分布式事务。
答案 0 :(得分:1)
我认为它与REPEATABLE READ
的性质以及mysql引擎中XA的局限性有关(MySQL并不完全符合XA规范)。
一个已知问题是某些具有复制的崩溃方案可能导致binlog中缺少事务:From: Restrictions on XA Transactions
有了上述内容,ACID的一致性就会丢失。
我认为SERIALIZABLE
强制执行的严格行为可以将这种情况减轻到他们描述xid等工作所需的程度。但是,对这些问题的阐述却令人怀疑。 Mysql 5.6 - Consistent Read