从0到1理解数据库事务(下):隔离级别实现——MVCC与锁

这是数据库事务分享的第二篇,上一篇讲解数据库事务并发会产生的问题,这篇会详细讲数据库如何避免这些问题,也就是如何实现隔离,主要是讲两种主流技术方案——MVCC与锁,理解了MVCC与锁,就可以举一反三地看各种数据库并发控制方案,并理解每种实现能解决的问题以及需要开发者自己注意的并发问题,以更好支撑业务开发。

先回顾一下上一篇讨论过的,如果没有隔离或者隔离级别不足,会带来的问题:

  • 脏写(Dirty Write)
  • 脏读(Dirty Read)
  • 不可重复读(Unrepeatable Read)
  • 幻读(Phantom)
  • 读偏差(Read Skew)
  • 写偏差(Write Skew)
  • 丢失更新(Lost Updates)