mysql - 是否仍在使用 XA/JTA 事务?

标签 mysql postgresql jta distributed-transactions xa

我有一个与多个数据库和一些自定义服务交互的应用程序。对于某些操作,我需要类似事务的行为,其中一组更改要么在所有数据库/服务中提交,要么在发生错误时全部回滚。

来自 X/Open 组的 XA 标准和 Java JTA 似乎使用两阶段提交过程来解决这个问题。一些数据库(mySQL、Postgres、Oracle)支持这些接口(interface),但我感觉它们不经常使用或流行度下降。真的吗?如果是这样,为什么?

我知道 mySQL 上的 XA 存在一些与复制相关的问题。此外,XA 事务可能会显着变慢。 XA 不受欢迎/不常见还有其他原因吗?

最佳答案

XA有几点:

  • 它完成了它的工作,没有公认的替代方案。如果您必须使用分布式事务,那么就没有办法绕过 XA。
  • 它是“标准技术”,没有炒作,也没有营销。因此,它在大多数人的雷达之下飞行。
  • 即使使用了它,Jack Application Developer 也很有可能不知道它,因为大多数部分通常隐藏在某些框架中。
  • 对 XA 的需求确实有所下降,因为面向服务的架构 (SOA) 和消息队列是大肆宣传的架构范例,它们试图避免子系统的这种紧密耦合。虽然至少 SOA 似乎也在衰退。 ;-)
  • XA 中经常被遗忘的部分是在事务实际中断时使用的必需代码和工具。 XA 中有一些外围事务管理器在相当长的一段时间内既不能提交也不能回滚所有资源。这一点只会增加“仅在您确实必须时使用它”这一点。

关于mysql - 是否仍在使用 XA/JTA 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8421631/

相关文章:

java - 迁移weblogic到tomcat : No JTA UserTransaction available

java - Spring全局事务在获取元素后提交

mysql - 插入主键 UUID_SHORT 时出现重复条目​​ mysql

php - Javascript 计时器不与 mysql_fetch_array 结果一起循环

postgresql - Heroku 上的 em_postgresql

database - 使用golang从postgres中的csv批量插入而不使用for循环

sql - 仅当 select 返回有效行时才从 select 插入表

java - 在数据库中存储由 Java 中的 List 表示的 'large' 数据的最佳实践是什么?

mysql - 我应该使用 MySQL blob 字段类型吗?

php - 从 MySQL 中按月和年分组的时间戳列中获取记录