RC隔离级别 + 唯一索引
唯一索引行锁,主键索引行锁
RC 隔离级别 + 主键
主键索引行锁
RC 隔离级别 + 普通索引
普通索引的X锁,主键的X锁
RC 隔离级别 + 无索引
对应主键的X锁
若列上没有索引,MySQL会走聚簇(主键)索引进行全表扫描过滤。每条记录都会加上X锁。但是,为了效率考虑,MySQL在这方面进行了改进,在扫描过程中,若记录不满足过滤条件,会进行解锁操作。同时优化违背了2PL原则。
2PL即两阶段提交原则,加锁阶段是在开启事务,释放锁阶段是在commit和rollback。
由于这个解锁不是在commit和rollback阶段完成的所以说违背了2PL原则。
RR隔离级别 + 唯一索引
唯一索引行锁,主键索引行锁
RR 隔离级别 + 主键
主键索引行锁
RR 隔离级别 + 普通索引
行锁+间隙锁
RR隔离级别 + 无索引
全表行锁 + 全表间隙锁 即锁表,不能做更新、删除操作和插入操作