diff --git a/content/zh/ch8.md b/content/zh/ch8.md index 063552b..8a976b0 100644 --- a/content/zh/ch8.md +++ b/content/zh/ch8.md @@ -877,9 +877,7 @@ SELECT * FROM bookings 1. 当应用程序想要开始分布式事务时,它从协调器请求事务 ID。此事务 ID 是全局唯一的。 2. 应用程序在每个参与者上开始单节点事务,并将全局唯一的事务 ID 附加到单节点事务。所有读写都在这些单节点事务之一中完成。如果在此阶段出现任何问题(例如,节点崩溃或请求超时),协调器或任何参与者都可以中止。 3. 当应用程序准备提交时,协调器向所有参与者发送准备请求,标记有全局事务 ID。如果这些请求中的任何一个失败或超时,协调器向所有参与者发送该事务 ID 的中止请求。 -4. 当参与者收到准备请求时,它确保它可以在任何情况下明确提交事务。 - - 这包括将所有事务数据写入磁盘(崩溃、电源故障或磁盘空间不足不是稍后拒绝提交的可接受借口),并检查任何冲突或约束违规。通过向协调器回复"是",节点承诺在请求时无错误地提交事务。换句话说,参与者放弃了中止事务的权利,但没有实际提交它。 +4. 当参与者收到准备请求时,它确保它可以在任何情况下明确提交事务。这包括将所有事务数据写入磁盘(崩溃、电源故障或磁盘空间不足不是稍后拒绝提交的可接受借口),并检查任何冲突或约束违规。通过向协调器回复"是",节点承诺在请求时无错误地提交事务。换句话说,参与者放弃了中止事务的权利,但没有实际提交它。 5. 当协调器收到所有准备请求的响应时,它对是否提交或中止事务做出明确决定(仅当所有参与者投票"是"时才提交)。协调器必须将该决定写入其磁盘上的事务日志,以便在随后崩溃时知道它是如何决定的。这称为*提交点*。 6. 一旦协调器的决定被写入磁盘,提交或中止请求就会发送给所有参与者。如果此请求失败或超时,协调器必须永远重试,直到成功。没有回头路:如果决定是提交,那么必须执行该决定,无论需要多少次重试。如果参与者在此期间崩溃,事务将在恢复时提交——因为参与者投票"是",它在恢复时不能拒绝提交。