有谁知道为什么Mysql需要可序列化的隔离级别来实现XA事务的ACID属性,或者如果使用可重复读取和XA会丢失什么?
However, for a distributed
transaction, you must use the
SERIALIZABLE isolation level to
achieve ACID properties. It is enough
to use REPEATABLE READ for a
nondistributed transaction, but not
for a distributed transaction.
http://dev.mysql.com/doc/refman/5.6/en/xa.html
解决方法:
我认为它与REPEATABLE READ的性质以及mysql引擎中XA的局限性有关(MySQL并不完全符合XA规范).
一个已知问题是某些具有复制的崩溃方案可能导致binlog中缺少事务:From: Restrictions on XA Transactions
有了上述内容,ACID的一致性就会丧失.
我假设SERIALIZABLE强制执行的严格行为可以减轻这种情况,并将其描述为xid等工作方式.但是,对这些问题的阐述却令人怀疑. Mysql 5.6 – Consistent Read