Ⅰ 数据库的幻读什么意思
幻读:是指两次查询结果集不一样了。比如:
两个并发事务A、B。在T1这个时刻,事务A通过筛选条件获取到的记录是10条。此时并发事务B往数据库插入一条满足事务A查询条件的记录。这时A还没有结束,在事务内再次获取数据时以相同的条件筛选,结果筛选出了11条记录。这就是幻读。
你可以这样理解:
脏读关注的是当前获得的结果与数据库结果不一样,数据不同。
不可重复读关注的同一事务内两次读取,但数据不同。
以上两个都是同一结果集。
而幻读强调的是,结果集变了。
幻读造成的原因是,共享锁并不能锁住我筛选的结果集以外的数据,即便你开启了可重复读,想要避免的话,可以更改事务隔离级别。