详见答案 mysql next-key locks nextkey lock next key 间隙锁 到底是什么?_个人渣记录仅为自己搜索用的博客-CSDN博客
事务 acid 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
a : commit 等
c : redoLog undoLog
i : 锁
d : 磁盘
对事务而言, 锁的存在目的是为了事务的隔离性.
当然广义上,锁的存在还是为了控制并发. 控制并发某种意义是就是控制多个线程的隔离.
不同的角度.
一般锁: 可重复读(对快照读,一般锁 mvcc也能防止幻读)
间隙锁: 防止幻读.(对当前读,通过间隙锁实现防止幻读)
从这个根本出发. 哪些情况会导致幻读,就需要间隙锁.
普通的select 是不锁的.
只有 select for update 才锁, 或者 delete ,update里的where条件
1. 区间条件
2. 命中一行,且是非unique
3. 不命中一行,不管是不是unique .
无间隙锁:
1. 命中一行且unique
2. 读提交级别
3.
一般锁: 等价性 a 锁 b, b也锁 a
特殊锁: 间隙锁.