四种隔离级别的加锁策略如下:

    1. 读未提交(Read Uncommitted):
      1. 事务读不阻塞其他事务读和写
      2. 事务写阻塞其他事务写但不阻塞读;
      3. 通过对写操作加 “持续X锁”,对读操作不加锁实现;
    2. 读已提交(Read Committed):
      1. 事务读不会阻塞其他事务读和写
      2. 事务写会阻塞其他事务读和写;
      3. 通过对写操作加 “持续X锁”,对读操作加 “临时S锁” 实现;不会出现脏读;
    3. 可重复读(Repeatable Read):
      1. 事务读会阻塞其他事务写,但不阻塞读
      2. 事务写会阻塞其他事务读和写;
      3. 通过对写操作加 “持续X锁”,对读操作加 “持续S锁” 实现;
    4. 序列化(Serializable):
      1. 为了解决幻读问题,行级锁做不到,需使用表级锁。

    MVCC的两种隔离级别

    1. RC
      1. 读最新版本, 只有在被锁住的时候才读快照版本
    2. RR
      1. 永远只读读快照版本