四种隔离级别的加锁策略如下:
- 读未提交(Read Uncommitted):
- 事务读不阻塞其他事务读和写
- 事务写阻塞其他事务写但不阻塞读;
- 通过对写操作加 “持续X锁”,对读操作不加锁实现;
- 读已提交(Read Committed):
- 事务读不会阻塞其他事务读和写
- 事务写会阻塞其他事务读和写;
- 通过对写操作加 “持续X锁”,对读操作加 “临时S锁” 实现;不会出现脏读;
- 可重复读(Repeatable Read):
- 事务读会阻塞其他事务写,但不阻塞读
- 事务写会阻塞其他事务读和写;
- 通过对写操作加 “持续X锁”,对读操作加 “持续S锁” 实现;
- 序列化(Serializable):
- 为了解决幻读问题,行级锁做不到,需使用表级锁。
MVCC的两种隔离级别
- RC
- 读最新版本, 只有在被锁住的时候才读快照版本
- RR
- 永远只读读快照版本