Database 两阶段提交如何确保可序列化性

Database 两阶段提交如何确保可序列化性,database,transactions,distributed-transactions,Database,Transactions,Distributed Transactions,分布式事务中使用两阶段提交。例如,客户机通过协调器向两个数据库发送一个事务 步骤1:客户端从协调器获取全局事务id 步骤2:客户端将事务分别发送到两个数据库 步骤3:客户端将提交标志发送给协调器 步骤4:协调器向两个数据库发送准备标志,两个数据库响应准备确认 步骤5:协调器向两个数据库发送提交标志,两个数据库响应提交确认 步骤6:协调器响应向客户端提交确认 我的问题是 步骤1中的全局事务id用于什么 两阶段提交用于确保ACID中的原子性,但它如何确保可序列化性?例如,如果客户端A同时向数据

分布式事务中使用两阶段提交。例如,客户机通过协调器向两个数据库发送一个事务

  • 步骤1:客户端从协调器获取全局事务id
  • 步骤2:客户端将事务分别发送到两个数据库
  • 步骤3:客户端将提交标志发送给协调器
  • 步骤4:协调器向两个数据库发送准备标志,两个数据库响应准备确认
  • 步骤5:协调器向两个数据库发送提交标志,两个数据库响应提交确认
  • 步骤6:协调器响应向客户端提交确认
我的问题是

  • 步骤1中的全局事务id用于什么
  • 两阶段提交用于确保ACID中的原子性,但它如何确保可序列化性?例如,如果客户端A同时向数据库发送事务A,客户端B同时向数据库发送事务B,那么两个数据库可能会以不同的顺序执行两个事务。然后,两个数据库可能以不一致的状态结束

第一步中的全局事务id是全局唯一的。 为了确保原子性,2pc在协调器不可用时使用阻塞

我在这里读了一些关于它的文章: