一致性非锁定读和锁定读,总是读取最新数据,lock in share mode、for update
如果执行的是下列语句,就是 锁定读(Locking Reads)
select ... lock in share modeselect ... for updateinsert、update、delete操作
在锁定读下,读取的是数据的最新版本,这种读也被称为 当前读(current read)。锁定读会对读取到的记录加锁:
-
select ... lock in share mode:对记录加S锁,其它事务也可以加S锁,如果加x锁则会被阻塞 -
select ... for update、insert、update、delete:对记录加X锁,且其它事务不能加任何锁
InnoDB 在实现Repeatable Read 时,如果执行的是当前读,则会对读取的记录使用 Next-key Lock ,来防止其它事务在间隙间插入数据
浙公网安备 33010602011771号