MySQL的行锁 - 知乎 (zhihu.com)

行锁:共享锁S和排他锁X

MySQL InnoDB的行锁又分为共享锁(S锁)排他锁(X锁)

一般普通的select语句,InnoDB不加任何锁,我们称之为快照读

通过加S锁和X锁的select语句或者插入/更新/删除操作,我们称之为当前读

特殊说明:以上的当前读,读取的都是记录的最新版本。对读取记录都会加锁,除了第一条语句lock in share mode是对记录加S锁(共享锁)外,其他的操作都是加X锁(排他锁)

为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB 还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁

锁模式的兼容情况:

Untitled