【MySQL可重复读级别解决了幻读的问题吗】

MySQL 可重复读隔离级别并没有彻底解决幻读,只是很大程度上避免了幻读现象的发生

幻读案例:

【MySQL可重复读级别解决了幻读的问题吗】_第1张图片

 

【MySQL可重复读级别解决了幻读的问题吗】_第2张图片

 【MySQL可重复读级别解决了幻读的问题吗】_第3张图片

 

可以看到事务A和事务B同时开启事务,事务A插入一条数据后提交,事务B查询看不到事务A提交的数据,但是此时事务B可以对插入的数据进行修改,修改之后再次查询就可以看到数据,就产生了幻读的问题

总结:要避免这类特殊场景下发生幻读的现象的话,就是尽量在开启事务之后,马上执行 select ... for update 这类当前读的语句,因为它会对记录加 next-key lock,从而避免其他事务插入一条新记录

参考https://xiaolincoding.com/mysql/transaction/phantom.html#%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%91%E7%94%9F%E5%B9%BB%E8%AF%BB%E7%8E%B0%E8%B1%A1%E7%9A%84%E5%9C%BA%E6%99%AF

你可能感兴趣的:(面试,mysql,数据库)