首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分布式-跨多个数据库或服务器-事务

分布式-跨多个数据库或服务器-事务
EN

Database Administration用户
提问于 2013-08-08 04:38:43
回答 1查看 2.8K关注 0票数 4

我对SQL中的事务有些疑问。我执行下面的步骤。

  1. 连接1为DB1数据库打开
  2. 开始连接1的事务处理
  3. 在连接1上运行命令
  4. 打开DB2数据库的连接2
  5. 开始连接2的事务处理
  6. 在连接2上运行命令
  7. 提交连接2的事务
  8. 提交连接1的事务

如果连接1上的提交事务失败(回滚),那么连接2上的事务应该回滚。有可能吗?怎么做呢?

EN

回答 1

Database Administration用户

发布于 2013-08-08 06:01:04

是的,这是可以做到的,但您需要第三方充当事务协调器。这方面的标准协议称为两阶段提交 (2PC)。这通常是通过事务管理器作为协调器完成的。

这也可以进一步推广到两个以上的数据库。事实上,它甚至不必是数据库,因为这种方法通常应用于“事务性资源”。除了数据库之外,其他常见的事务资源是消息队列。通常的示例是在数据库中执行一些工作(例如:更新帐户余额),并在消息队列(ex:出站订单)上发送消息。

为此,数据源需要支持2PC,通常是通过XA协议。如何做到这一点取决于特定类型的数据源和编程语言(例如:对于Java,您将使用XADataSource)。

票数 9
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/47762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档