单薄小懒猪

文章
11
资源
1
加入时间
2年10月17天

MySQL的幻读

定义:也就是同样的select读取sql语句读到的数据,后一次比前一次读到更多的数据行(事务在执行两句select语句中间时间,有其他事务往数据库中加入了数据行)事务执行过程中单独给每一行加写锁并不能阻止幻读,因为事务不能给当前没有记录的行加锁,所以其他事务可以加入新的数据,那么前后两次select就可能查到多出的数据行。如下图所示:幻读的解决办法:使用next-key lock(间隙锁 Gap key + 行锁的合称),间隙所就是锁住相邻两行记录之间的空行(前开后闭区间)。比如:(0, 10]