mysql innodb的默认隔离级别是可重复读,之前理解有些偏差,查阅一些资料后总结出几点
首先有两个概念:
一致性视图:当一个事务开启时,innodb会生成一个视图,这个视图是逻辑视图,通过undo log和row tranzaction id控制实现。在该事务的任何时间点,一致性视图中的数据都是一样的
当前读:当innodb执行dml时,使用的是当前读,并且要先获得行锁(没有索引时为表锁)
到底什么数据(修改)是可见的?
1.普通的select:一致性视图+本事务中做的修改
2.dml和select …for update或者其它带锁的查询:一致性视图+本事务中做的修改+其它已提交事务的修改。也就是当前读,其实很好理解,既然用到了锁,同步数据状态也是应该的。
来源:CSDN
作者:weixin_39913976
链接:https://blog.csdn.net/weixin_39913976/article/details/103480972