首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2PC (两阶段提交)和2PL(两阶段锁定)之间的区别

2PC (两阶段提交)和2PL(两阶段锁定)之间的区别
EN

Stack Overflow用户
提问于 2021-08-03 17:16:36
回答 1查看 101关注 0票数 1

两者之间的区别是什么?表面上的协议看起来不同,但我想了解这两者之间真正的不同之处以及为什么它们不是等价的。

EN

回答 1

Stack Overflow用户

发布于 2021-10-09 05:29:08

2 Phase locking是在单个数据库实例中实现的一种机制,用于实现可序列化的隔离级别。可序列化事务级别是最强的隔离,即使是并行执行的事务,最终结果也与串行执行的事务相同。它的工作原理如下:

每当事务想要更新一个对象/行时,它必须获取一个写/排它锁。当事务想要读取一个对象/行时,它必须获得一个读/共享锁。不是在每次查询后立即释放锁,而是必须持有锁,直到事务结束(提交或中止)。因此,当事务正在执行时,事务持有的锁的数量会扩大/增长。(读/写锁定行为类似于任何其他读取器/写入器锁定机制,因此在此不再讨论)

在事务结束时,锁被释放,事务持有的锁的数量减少。

由于锁在一个阶段被获取,而在另一个阶段被释放,即在获取阶段没有锁释放,在释放阶段没有新的锁获取,这被称为两阶段锁定。

2 phase commit是一种跨多个数据库实例实现分布式事务的算法,以确保所有节点要么提交事务,要么中止事务。

它的工作方式是让协调器(可以是启动事务的应用程序中的单独服务或库)发出两个请求-准备到阶段1中的所有节点,并提交(如果所有节点在准备阶段返回OK )或中止(如果任何节点在准备阶段返回NOT OK )到阶段2中的所有节点。

TLDR:

2 phase locking -用于单个数据库实例内的可序列化隔离

2 phase commit -跨分布式数据库/数据存储区的多个节点的原子提交

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68640301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档