https://www.nowcoder.com/discuss/899984099421474816

既然已经有了锁机制,数据库依然引入 MVCC(多版本并发控制)的核心原因是为了大幅提升并发性能,特别是解决高频读写场景读写下的冲突 [1, 2]

以下是 MVCC 弥补锁机制不足的关键点:

虽然 MVCC 解决了大部分读写冲突,但它不能完全替代锁。“写-写”冲突(例如两个事务同时修改同一行数据)依然需要通过锁机制来保证隔离性,以防止脏写。因此,现代数据库(如 MySQL 的 InnoDB)通常是 MVCC 与锁协同工作,前者处理读写并发,后者处理并发写入。 [1, 2, 3]

如果想更深入了解,请问你想了解: • MVCC 在 MySQL 中的具体实现原理(如 Undo Log、Read View)? • 数据库是如何具体处理 “写-写”冲突的? • 你的业务场景中遇到了什么并发性能瓶颈需要优化?