gpt4 book ai didi

concurrency - 乐观与多版本并发控制 - 差异?

转载 作者:行者123 更新时间:2023-12-03 12:40:53 37 4
gpt4 key购买 nike

我想知道,乐观并发控制 (OCC) 和多版本并发控制 (MVCC) 之间的区别是什么?

到目前为止,我知道两者都是基于更新的版本检查。

在 OCC 中,我读到了没有获取读取访问锁的事务,仅适用于以后的更新,如果在版本增加和版本检查失败之间,该更新将失败。在这种情况下,事务将被回滚。

在MVCC中,基本是一样的,还是不行?区别在哪里?

最佳答案

我认为它们有时可以互换使用,如果事务只涉及一个对象,那么它们本质上是相同的,但 MVCC 是乐观并发(或它的一个版本)的扩展,它在涉及多个对象时提供保证。
假设您有两个对象 A 和 B,它们必须在它们之间保持一些不变性,例如它们是总和为常数的两个数。现在,事务 T1 从 A 中减去 10 并将其添加到 B,同时,另一个事务 T2 正在读取这两个数字。
即使您乐观地独立更新 A 和 B(CAS 它们),T2 也可能会得到这两个数字的不一致 View (例如,如果它在修改前读取 A,但在修改后读取 B)。 MVCC 将通过可能返回它们的旧值来确保 T2 读取 A 和 B 的一致 View ,即它必须保存旧版本。

综上所述,乐观锁(或乐观并发控制)是无锁同步的一般原则。 MVCC 是一种乐观技术,它允许跨越多个对象的隔离事务。

关于concurrency - 乐观与多版本并发控制 - 差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5751271/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com