一致性非锁定读和锁定读,总是读取最新数据,lock in share mode、for update

如果执行的是下列语句,就是 锁定读(Locking Reads)

  • select ... lock in share mode
  • select ... for update
  • insertupdatedelete 操作

在锁定读下,读取的是数据的最新版本,这种读也被称为 当前读(current read)。锁定读会对读取到的记录加锁:

  • select ... lock in share mode:对记录加 S 锁,其它事务也可以加S锁,如果加 x 锁则会被阻塞

  • select ... for updateinsertupdatedelete:对记录加 X 锁,且其它事务不能加任何锁

InnoDB 在实现Repeatable Read 时,如果执行的是当前读,则会对读取的记录使用 Next-key Lock ,来防止其它事务在间隙间插入数据

posted on 2023-08-12 15:03  潮流教父孙笑川  阅读(35)  评论(0)    收藏  举报

导航