千家信息网

怎么理解MySQL的2PC和3PC

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"怎么理解MySQL的2PC和3PC",在日常操作中,相信很多人在怎么理解MySQL的2PC和3PC问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么理
千家信息网最后更新 2026年10月31日怎么理解MySQL的2PC和3PC

这篇文章主要介绍"怎么理解MySQL的2PC和3PC",在日常操作中,相信很多人在怎么理解MySQL的2PC和3PC问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么理解MySQL的2PC和3PC"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

分布式系统和分布式一致性问题

  分布式系统,即运行在多台不同的网络计算机上的软硬件系统,并且仅通过消息传递来进行通信和协调。

  分布式一致性问题,即相互独立的节点之间如何就一项决议达成一致的问题。

2PC(Two-Phase Commit 二阶段提交)

二阶段提交,是指将事务提交分成两个部分:准备阶段和提交阶段。事务的发起者称之为协调者,事务的执行者称为参与者。

阶段一:准备阶段

由协调者发起并传递带有事务信息的请求给各个参与者,询问是否可以提交事务,并等待返回结果。

个 参与者执行事务操作,将Undo和Redo放入事务日志中(但是不提交)

如果参与者执行成功就返回YES(可以提交事务),失败NO(不能提交事务)

阶段二:提交阶段

此阶段分两种情况:所有参与者均返回YES,有任何一个参与者返回NO

所有参与者均反馈YES时,即提交事务。

任何一个参与者反馈NO时,即中断事务。

提交事务:(所有参与者均反馈YES)

  1、协调者向所有参与者发出正式提交事务的请求(即Commit请求)。

  2、参与者执行Commit请求,并释放整个事务期间占用的资源。

  3、各参与者向协调者反馈Ack完成的消息。

  4、协调者收到所有参与者反馈的Ack消息后,即完成事务提交。

中断事务:(任何一个参与者反馈NO)

  1、协调者向所有参与者发出回滚请求(即Rollback请求)。

  2、参与者使用阶段1中的Undo信息执行回滚操作,并释放整个事务期间占用的资源。

  3、各参与者向协调者反馈Ack完成的消息。

  4、协调者收到所有参与者反馈的Ack消息后,即完成事务中断。

2PC的缺陷

  1、同步阻塞:最大的问题即同步阻塞,即:所有参与事务的逻辑均处于阻塞状态。

  2、单点:协调者存在单点问题,如果协调者出现故障,参与者将一直处于锁定状态。

  3、脑裂:在阶段2中,如果只有部分参与者接收并执行了Commit请求,会导致节点数据不一致。

  由于2PC存在如上同步阻塞、单点、脑裂问题,因此又出现了2PC的改进方案,即3PC。

3PC(Three-Phase Commit 三阶段提交协议)

  3PC,三阶段提交协议,是2PC的改进版本,即将事务的提交过程分为CanCommit、PreCommit、do Commit三个阶段来进行处理。

阶段一:CanCommit

1、协调者向所有参与者发出包含事务内容的CanCommit请求,询问是否可以提交事务,并等待所有参与者答复。

2、参与者收到CanCommit请求后,如果认为可以执行事务操作,则反馈YES并进入预备状态,否则反馈NO。

阶段二:PreCommit

此阶段分为两种情况:

1.所有参与者均受到请求并返回YES。

2.有任何一个参与者返回NO,或者有任何一个参与者超时,协调者无法收到反馈,则事务中断

事务预提交:(所有参与者均反馈YES时)

  1、协调者向所有参与者发出PreCommit请求,进入准备阶段。

  2、参与者收到PreCommit请求后,执行事务操作,将Undo和Redo信息记入事务日志中(但不提交事务)。

  3、各参与者向协调者反馈Ack响应或No响应,并等待最终指令。

中断事务:(任何一个参与者反馈NO,或者等待超时后协调者尚无法收到所有参与者的反馈时)

  1、协调者向所有参与者发出abort请求。

  2、无论收到协调者发出的abort请求,或者在等待协调者请求过程中出现超时,参与者均会中断事务。

阶段3:do Commit

此阶段也存在两种情况:

  1、所有参与者均反馈Ack响应,即执行真正的事务提交。

  2、任何一个参与者反馈NO,或者等待超时后协调者尚无法收到所有参与者的反馈,即中断事务。

  提交事务:(所有参与者均反馈Ack响应时)

  1、如果协调者处于工作状态,则向所有参与者发出do Commit请求。

  2、参与者收到do Commit请求后,会正式执行事务提交,并释放整个事务期间占用的资源。

  3、各参与者向协调者反馈Ack完成的消息。

  4、协调者收到所有参与者反馈的Ack消息后,即完成事务提交。

  中断事务:(任何一个参与者反馈NO,或者等待超时后协调者尚无法收到所有参与者的反馈时)

  1、如果协调者处于工作状态,向所有参与者发出abort请求。

  2、参与者使用阶段1中的Undo信息执行回滚操作,并释放整个事务期间占用的资源。

  3、各参与者向协调者反馈Ack完成的消息。

  4、协调者收到所有参与者反馈的Ack消息后,即完成事务中断。

  注意:进入阶段三后,无论协调者出现问题,或者协调者与参与者网络出现问题,都会导致参与者无法接收到协调者发出的 do Commit请求或abort请求。此时,参与者都会在等待超时之后,继续执行事务提交。

3PC的优点和缺陷

  优点:降低了阻塞范围,在等待超时后协调者或参与者会中断事务。避免了协调者单点问题,阶段3中协调者出现问题时,参与者会继续提交事务。

  缺陷:脑裂问题依然存在,即在参与者收到PreCommit请求后等待最终指令,如果此时协调者无法与参与者正常通信,会导致参与者继续提交事务,造成数据不一致。

到此,关于"怎么理解MySQL的2PC和3PC"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

参与者 事务 协调者 阶段 问题 消息 一致 状态 阻塞 信息 分布式 资源 单点 学习 情况 系统 缺陷 准备 同步 一致性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技巨头监管 科技平台互联网 金融科技还是互联网 重庆互联网络科技 北京互联网科技 奇酷互联网络科技公司 广州紫鲸互联网科技 互联网科技英文翻译 汉立互联网科技有限公司联系电话 卫星互联网科技股票 玖二柒互联网科技公司待遇 中盈科技互联网信息有限公司 温州喔噻互联网科技有限公司 常德市电业局互联网科技部 互联网科技创新的路径 互联网方面的科技前沿 高科技互联网套路 互联网科技机房 上海万顺科技互联网有限公司招聘 河南商务圈互联网科技有限公司 鸠鸠互联网科技 没上市的科技互联网公司 科技互联网创业计划书 湖南一路畅行互联网科技 知域互联网科技有限公司大骗子 互联网科技大奖都有哪些公司 互联网科技如何创业 互联网方面的科技前沿 互联网科技职业技能培训学校 广州全民伙伴互联网科技有限公司
0