为什么两阶段提交被认为是原子的?

Gav*_*ahl 5 transactions acid atomic distributed-transactions atomicity

两阶段提交被称为“原子提交协议”。我希望这意味着所有客户从事务提交之前或提交之后都可以看到世界的状态,而没有中间状态。似乎它可以进入一种状态,其中事务已部分提交,客户看到不一致的数据,从而破坏了原子性。

考虑两个数据库A和B的情况。如果在提交阶段A提交之后但B提交之前存在分区,则事务将部分提交。查询A和B的用户将看不到一致的数据-事务已在A上提交,但B具有来自提交之前的数据。

ACID的“一致”部分似乎也已损坏-查询A和B的客户端可能会看到违反业务规则的数据。

我的想法是,当分区结束并且事务管理器指示B提交时,系统最终将能够从中恢复。但是,与此同时,系统处于不一致的“部分提交”状态。难道不是要防止这种情况的全部原因吗?通过恢复时间一致性,损坏可能已经造成。

当两阶段提交被称为原子时,指的是什么属性?

Bas*_*wer 3

原子性意味着操作要么会产生一些效果,要么系统将保持在相同的状态。2PC 算法的工作原理是,首先协调器要求所有分布式机器prepare进行事务处理。收到后,Yes它会发送命令来提交事务。

如果协调器仅从所有机器收到成功,则事务完成,否则如果此后出现网络中断或任何其他问题,那么您将陷入两将军问题。它与分布式系统一样原子。

只有通过隔离级别才能实现一致性。是否允许读以及是否允许脏读。