Am使用mysql 8.0版本并了解rdbms隔离级别的概念。在mysql中做小型示例时,有什么区别 不可重复读取和幻像读取。 google上的大多数答案都从理论上解释了可重复读取隔离级别可以防止不可重复读取问题,即任何在整个事务中看到任何值的事务,其他事务都不会更改第一笔事务的状态,但是其他事务可以插入新值。读取可以在可重复读取模式下发生)可序列化的隔离级别可以防止幻像读取问题,这是我的方法,而且很困惑。
假设所有会话级别的事务级别都是可重复读取的,并且所有表都在INNODB引擎中创建
会话:-1 开始交易; 从demo.employee中选择*; //假设它有3条记录,分别是ID 1,2和3会议2: 开始交易 从demo.employee中选择* //在会话1中看到的相同值
会话:-1 更新一些ID = 1的值 现在触发选择查询,我们就能看到更新后的值
会话:2 再次触发选择查询,并且只能看到以前的值 (到目前为止,我可以理解可重复阅读的概念) 现在,会话2插入新行 我的插入查询开始等待,直到第一个事务完成。 如何重复读取还可以防止幻像读取有人能指导我理解这一点吗?