从0到1理解数据库事务(下):隔离级别实现——MVCC与锁
这是数据库事务分享的第二篇,上一篇讲解数据库事务并发会产生的问题,这篇会详细讲数据库如何避免这些问题,也就是如何实现隔离,主要是讲两种主流技术方案——MVCC与锁,理解了MVCC与锁,就可以举一反三地看各种数据库并发控制方案,并理解每种实现能解决的问题以及需要开发者自己注意的并发问题,以更好支撑业务开发。
先回顾一下上一篇讨论过的,如果没有隔离或者隔离级别不足,会带来的问题:
- 脏写(Dirty Write)
- 脏读(Dirty Read)
- 不可重复读(Unrepeatable Read)
- 幻读(Phantom)
- 读偏差(Read Skew)
- 写偏差(Write Skew)
- 丢失更新(Lost Updates)