mysql可重复读

耗尽温柔 提交于 2019-12-10 19:52:42

mysql innodb的默认隔离级别是可重复读,之前理解有些偏差,查阅一些资料后总结出几点

首先有两个概念:
一致性视图:当一个事务开启时,innodb会生成一个视图,这个视图是逻辑视图,通过undo log和row tranzaction id控制实现。在该事务的任何时间点,一致性视图中的数据都是一样的
当前读:当innodb执行dml时,使用的是当前读,并且要先获得行锁(没有索引时为表锁)

到底什么数据(修改)是可见的?
1.普通的select:一致性视图+本事务中做的修改
2.dml和select …for update或者其它带锁的查询:一致性视图+本事务中做的修改+其它已提交事务的修改。也就是当前读,其实很好理解,既然用到了锁,同步数据状态也是应该的。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!