数据库的2PC与3PC是什么

发布时间:2021-12-31 09:24:04 作者:iii
来源:亿速云 阅读:360

本篇内容介绍了“数据库的2PC与3PC是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

数据库事务有ACID四大特性,分布式事务从实质看也要满足事务的基本特性(ACID),只是分布式事务相对于本地事务而言其表现形式有很大不同。

一:分布式事务 —— 一致性协议2PC

2PC ( Two-Phase Commit缩写)即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),2是指两个阶段,P是指准备阶段,C是指提交阶段。用于解决分布式事务一致性的问题。

常用的Oracle及MySQL就支持2PC协议,2PC协议的二个阶段如下:

  1. 准备阶段(Prepare phase):事务管理器给每个参与者发送Prepare消息,每个数据库参与者在本地执行事务,并写本地的Undo/Redo日志,此时事务没有提交。 (Undo日志是记录修改前的数据,用于数据库回滚,Redo日志是记录修改后的数据,用于提交事务后写入数据文件)

  2. 提交阶段(commit phase):如果事务管理器收到了参与者的执行失败或者超时消息时,直接给每个参与者发送回滚(Rollback)消息;否则,发送提交(Commit)消息;参与者根据事务管理器的指令执行提交或者回滚操作,并释放事务处理过程中使用的锁资源。注意:必须在最后阶段释放锁资源。

1.1 2PC成功执行的流程

数据库的2PC与3PC是什么

准备阶段:

  1. 事务管理器进行事务询问。事务管理器(协调者)向数据库参与者发送事务内容,询问是否可以执行事务提交操作,并等待参与者响应。

  2. 参与者执行事务。(写本地的Undo、Redo日志)

  3. 参与者反馈询问的响应

提交阶段:

  1. 事务管理器发送提交(commit)请求。

  2. 参与者正式提交事务,并释放整个事务执行期间占用的事务资源。

  3. 参与者反馈事务提交结果,发送ACK消息。

  4. 事务管理器收到所有参与者反馈的ACK消息后,完成事务

1.2 2PC执行失败(中断事务)的流程

数据库的2PC与3PC是什么

准备阶段与成功执行的步骤一样:

  1. 事务管理器进行事务询问,事务管理器(协调者)向数据库参与者发送事务内容,询问是否可以执行事务提交操作,并等待参与者响应。

  2. 参与者执行事务。(写本地的Undo、Redo日志)

  3. 参与者反馈询问的响应

提交阶段:

  1. 事务管理器发送回滚(Rollback)请求,当收到参与者执行失败或超时消息时。

  2. 参与者接收到Rollback请求后,利用准备阶段记录的Undo日志进行事务回滚操作,并释放整个事务执行期间占用的事务资源。

  3. 参与者反馈事务提交结果。参与者在完成事务回滚之后,向协调者发送 Ack 信息。

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

1.3 2PC的优缺点

优点:原理简单,便于实现。

缺点:

二:分布式事务 —— 一致性协议3PC

3PC,全称 “three phase commit”,是 2PC 的改进版,将 2PC 的 “提交事务请求Prepare” 过程一分为二(CanCommit、PreCommit),共形成了由 CanCommit、PreCommit和doCommit三个阶段组成的事务处理协议。

数据库的2PC与3PC是什么

2.1 3PC步骤

CanCommit
PreCommit

协调者在得到所有参与者的响应之后,参与者在CanCommit反馈的是Yes,执行事务预提交

协调者在得到所有参与者的响应之后,参与者在CanCommit反馈的是No,中断事务

DoCommit

DoCommit阶段完成真正的事务提交或者完成事务回滚。

在第二阶段PreCommit阶段收到ACK确认消息,则完成事务提交:

在第二阶段PreCommit阶段超时中断没有收到ACK确认消息,则完成事务中断:

注意:在DoCommit阶段可能出现协调者宕机协调者与参与者出现网络故障导致参与者接收不到协调者的DoCommit请求或Abort请求,参与者会在请求超时后,继续进行事务提交

2.2 3PC与2PC对比

“数据库的2PC与3PC是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 分布式一致性算法2PC和3PC
  2. 分布式事务之深入理解什么是2PC、3PC及TCC协议?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库

上一篇:一致性算法Raft分为哪些模块

下一篇:如何分析在SAP C4C里触发SAP ERP的ATP check和Credit check

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》