2pc和3pc的区别到底是什么?
一、2pc和3pc的区别
1.3pc比2pc多了一个can commit阶段,减少了不必要的资源浪费。因为2pc在名列前茅阶段会占用资源,而3pc在这个阶段不占用资源,只是校验一下sql,如果不能执行,就直接返回,减少了资源占用。
2.引入超时机制。同时在协调者和参与者中都引入超时机制。
2pc:只有协调者有超时机制,超时后,发送回滚指令。
3pc:协调者和参与者都有超时机制。
协调者超时: can commit,pre commit中,如果收不到参与者的反馈,则协调者向参与者发送中断指令。
参与者超时: pre commit阶段,参与者进行中断; do commit阶段,参与者进行提交。
两阶段提交(2PC)
两阶段提交又称2PC(two-phase commit protocol),2pc是一个非常经典的强一致、中心化的原子提交协议。这里所说的中心化是指协议中有两类节点:一个是中心化协调者节点(coordinator)和N个参与者节点(partcipant)。
三阶段提交(3PC)
三阶段提交又称3PC,其在两阶段提交的基础上增加了CanCommit阶段,并引入了超时机制。一旦事务参与者迟迟没有收到协调者的Commit请求,就会自动进行本地commit,这样相对有效地解决了协调者单点故障的问题。
延伸阅读:
二、事务的基本概念
就是一个程序执行单元,里面的操作要么全部执行成功,要么全部执行失败,不允许只成功一半另外一半执行失败的事情发生。例如一段事务代码做了两次数据库更新操作,那么这两次数据库操作要么全部执行成功,要么全部回滚。
事务有4个非常重要的特性,即我们常说的(ACID)。
Atomicity(原子性):是说事务是一个不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前的状态的话,那么之前已经执行的所有操作都是无效的,都应该回滚到开始前的状态。
Consistency(一致性):是说事务执行前后,数据从一个状态到另一个状态必须是一致的,比如A向B转账( A、B的总金额就是一个一致性状态),不可能出现A扣了钱,B却没收到的情况发生。
Isolation(隔离性): 多个并发事务之间相互隔离,不能互相干扰。关于事务的隔离性,可能不是特别好理解,这里的并发事务是指两个事务操作了同一份数据的情况;而对于并发事务操作同一份数据的隔离性问题,则是要求不能出现脏读、幻读的情况,即事务A不能读取事务B还没有提交的数据,或者在事务A读取数据进行更新操作时,不允许事务B率先更新掉这条数据。而为了解决这个问题,常用的手段就是加锁了,对于数据库来说就是通过数据库的相关锁机制来保证。
Durablity(持久性):事务完成后,对数据库的更改是永久保存的,不能回滚。
以上就是关于2pc和3pc的区别到底是什么的内容希望对大家有帮助。

猜你喜欢LIKE
相关推荐HOT
更多>>
cookie、sessionStorage、localStorage的区别?
一、cookie、sessionStorage、localStorage的区别1、存储空间不同Cookie:每个 Cookie 的大小一般不能超过 4KB。sessionStorage:某些浏览器支...详情>>
2023-10-15 19:26:14
存储过程有什么优缺点,在什么情况下用存储过程?
一、存储过程优点1.运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了...详情>>
2023-10-15 18:50:49
JavaScript的URL对象都有哪些?
一、JavaScript的URL对象1、Windows对象Windows对象即浏览器窗口对象,是所有对象的拔尖对象,其使用频繁,在JavaScript中调用其方法和属性时可...详情>>
2023-10-15 18:37:51
为什么@State只能在结构体中工作?
一、为什么@State只能在结构体中工作我们知道,SwiftUI 的State 属性包装器被设计用于存储当前视图的本地数据。不过一旦你需要在视图之间共享数...详情>>
2023-10-15 17:32:20热门推荐
cookie、sessionStorage、localStorage的区别?
沸requests模块的response.text与response.content有什么区别?
热什么是OpenCV?
热存储过程有什么优缺点,在什么情况下用存储过程?
新JavaScript的URL对象都有哪些?
什么是IDE,IDE有什么用?
什么是Android单元测试?
操作系统是什么,操作系统概述?
怎么做成在线文档?
浏览器输入url按下回车后发生了什么?
为什么@State只能在结构体中工作?
Linux I/O复用中select poll epoll模型的介绍及其优缺点?
哪些技术会决定前端开发者的未来发展?
Python单例模式实现及特点?
技术干货






