Concurrent Updates in Oracle: Locking or not?
我很困惑。我正在阅读有关 Oracle 中的 MVCC 的信息。我认为 MVCC 意味着没有锁。但是,我在其他地方读到所有
1 2 3 4 5 6 | Begin T1 Begin T2 T1: update t set c = c + 1 where id = 3 T2: update t set c = c + 1 where id = 3 Commit T1 Commit T2 |
你是对的,无论隔离级别如何,这都会锁定行。使用 MVCC,您可以在没有锁的情况下获得一致的读取,但在写入时仍然需要锁。
在尝试做任何事情之前,第二个事务将等待第一个事务完成(例如:
您将在 T1 提交后获得一个新的 SCN,在 T2 提交后获得另一个。