【Mysql】锁


行锁

对行记录上锁,但本质上是对行记录的索引上锁

记录锁

对一条记录上锁,被上锁的记录不能被删除、修改

间隙锁

对一个范围内的记录上锁,范围内的数据不能被删除、修改;增加新的数据到范围内

next-key lock

记录锁+间隙锁,左开右闭

  • 一般的select语句并不会对记录上锁,因为innodb默认的隔离级别是可重复读,采用快照读的形式,通过MVCC做事务的隔离。
  • 只有当使用select … for update语句的时候,采取的是当前读的形式,会对范围内的数据加next-key lock。但在一些特殊情况下,next-key lock会退化成间隙锁或记录锁