我有一个可以与多个数据库和一些自定义服务交互的应用程序。对于某些操作,我需要类似事务的行为,即一组更改要么跨所有数据库/服务提交,要么在发生错误时全部回滚。
来自X/Open组的XA标准和Java JTA似乎使用两阶段提交过程恰好解决了这个问题。一些数据库(mySQL、Postgres、Oracle)支持这些接口,但我感觉它们并不经常使用或越来越流行。这是真的吗?如果是这样,为什么呢?
我知道mySQL上的XA存在一些与复制相关的问题。此外,XA事务可能会明显变慢。XA不受欢迎/不常见还有其他原因吗?
发布于 2011-12-08 07:11:54
XA有以下几点:
发布于 2011-12-08 04:00:17
它们仍然用于您所提到的内容。如果其中一个数据库上的操作失败,那么所有操作都会回滚。
它们比较慢,因此如果不需要XA (即它是自治操作或非事务性的),那么就不应该使用它。
在处理多个DB时,Java容器甚至可能强制您使用XA数据源。
https://stackoverflow.com/questions/8421631
复制相似问题