林哥,幻读是怎么被解决的?
大家好,我是小林。
select ... for update
这种查询语句是当前读,每次执行的时候都是读取最新的数据。 select ... for update
当前读是不会加锁的(实际上是会加锁的),在做一遍读者那个实验。记录锁,锁的是记录本身;
间隙锁,锁的就是两个值之间的空隙,以防止其他事务在这个空隙间插入新的数据,从而避免幻读现象。
(2, +∞]
范围的记录,然后期间如果有其他事务在这个锁住的范围插入数据就会被阻塞。
评论
大家好,我是小林。
select ... for update
这种查询语句是当前读,每次执行的时候都是读取最新的数据。 select ... for update
当前读是不会加锁的(实际上是会加锁的),在做一遍读者那个实验。记录锁,锁的是记录本身;
间隙锁,锁的就是两个值之间的空隙,以防止其他事务在这个空隙间插入新的数据,从而避免幻读现象。
(2, +∞]
范围的记录,然后期间如果有其他事务在这个锁住的范围插入数据就会被阻塞。