行锁
对行记录上锁,但本质上是对行记录的索引上锁
记录锁
对一条记录上锁,被上锁的记录不能被删除、修改
间隙锁
对一个范围内的记录上锁,范围内的数据不能被删除、修改;增加新的数据到范围内
next-key lock
记录锁+间隙锁,左开右闭
- 一般的select语句并不会对记录上锁,因为innodb默认的隔离级别是可重复读,采用快照读的形式,通过MVCC做事务的隔离。
- 只有当使用select … for update语句的时候,采取的是当前读的形式,会对范围内的数据加next-key lock。但在一些特殊情况下,next-key lock会退化成间隙锁或记录锁