从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与锁,就可以举一反三地看各种数据库并发控制方案,并理解每种实现能解决的问题以及需要开发者自己注意的并发问题,以更好支撑业务开发。