两者之间的区别是什么?表面上的协议看起来不同,但我想了解这两者之间真正的不同之处以及为什么它们不是等价的。
发布于 2021-10-09 05:29:08
2 Phase locking
是在单个数据库实例中实现的一种机制,用于实现可序列化的隔离级别。可序列化事务级别是最强的隔离,即使是并行执行的事务,最终结果也与串行执行的事务相同。它的工作原理如下:
每当事务想要更新一个对象/行时,它必须获取一个写/排它锁。当事务想要读取一个对象/行时,它必须获得一个读/共享锁。不是在每次查询后立即释放锁,而是必须持有锁,直到事务结束(提交或中止)。因此,当事务正在执行时,事务持有的锁的数量会扩大/增长。(读/写锁定行为类似于任何其他读取器/写入器锁定机制,因此在此不再讨论)
在事务结束时,锁被释放,事务持有的锁的数量减少。
由于锁在一个阶段被获取,而在另一个阶段被释放,即在获取阶段没有锁释放,在释放阶段没有新的锁获取,这被称为两阶段锁定。
2 phase commit
是一种跨多个数据库实例实现分布式事务的算法,以确保所有节点要么提交事务,要么中止事务。
它的工作方式是让协调器(可以是启动事务的应用程序中的单独服务或库)发出两个请求-准备到阶段1中的所有节点,并提交(如果所有节点在准备阶段返回OK )或中止(如果任何节点在准备阶段返回NOT OK )到阶段2中的所有节点。
TLDR:
2 phase locking
-用于单个数据库实例内的可序列化隔离
2 phase commit
-跨分布式数据库/数据存储区的多个节点的原子提交
https://stackoverflow.com/questions/68640301
复制相似问题