【问题标题】:How is the two phases-commit different than transactions in the relational databases这两个阶段 - 提交与关系数据库中的事务有何不同
【发布时间】:2017-07-31 15:08:26
【问题描述】:

Mongo 网站说 two-phase commit 仅是 transaction-like。 但是他们展示了一个账户之间转账的例子,这是一个非常典型的例子,展示了关系数据库中的事务是如何工作的。

如果两阶段提交正确执行,它不就和传统事务一样吗? 他们到底有什么不同?

谢谢!

【问题讨论】:

  • 好吧,一个事务具有不同的动态,因为它实际上是在数据库本身内支持的,即使其他人在等待,数据库也会在事务期间持有锁,MongoDB 不会这样做。事务通常是原子的,MongoDB 的 2 阶段提交实际上不是

标签: mongodb transactions database


【解决方案1】:

链接中描述的步骤可能在中间某处失败,导致交易仅应用于一个文档。在这种情况下,recovery process 必须由应用程序启动。在事务性关系数据库中,没有应用程序启动的恢复过程。整个交易要么有效,要么无效。 (也就是说,除非您使用分布式事务,这确实需要 2 阶段提交)。

【讨论】:

  • 最后一部分并不完全正确,它取决于数据库何时提交。相当多的数据库将事务的提交设置为 5 分钟,这意味着您有时可能会有回滚场景。即使事务通常是原子的,它们也不一定是
猜你喜欢
  • 2014-03-16
  • 1970-01-01
  • 2018-08-15
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-11-15
  • 2019-11-03
相关资源
最近更新 更多