我有一个与多个数据库和一些自定义服务交互的应用程序。对于某些操作,我需要类似事务的行为,其中一组更改要么跨所有数据库/服务提交,要么在发生错误时全部回滚。
X/Open 组的 XA 标准和 Java JTA 似乎使用两阶段提交过程准确地解决了这个问题。一些数据库(mySQL、Postgres、Oracle)支持这些接口,但我感觉它们不经常使用或流行度下降。真的吗?如果是这样,为什么?
我知道 mySQL 上的 XA 存在一些与复制相关的问题。此外,XA 事务可能会明显变慢。XA 不受欢迎/不常见还有其他原因吗?