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

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

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

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

从0到1理解数据库事务(上):并发问题与隔离级别

最近准备写一篇关于Spanner事务的分享,所以先分享一些基础知识,涉及ACID、隔离级别、MVCC、锁,由于太长,只好拆分成上下两篇:

  • 上:并发问题与隔离级别 主要讲事务所要解决的问题、思路,先理解为什么需要事务以及事务并发控制中面临的问题。

  • 下:隔离级别实现——MVCC与锁 隔离性是为了更好地做到并发控制,事务的并发表现会对业务有直接影响,所以这篇会详细讲如何实现隔离,主要是讲两种主流技术方案——MVCC与锁,理解了MVCC与锁,就可以举一反三地看各种数据库并发控制方案,并理解每种实现能解决的问题以及需要开发者自己注意的并发问题,以更好支撑业务开发。