到底什么是幻读

现在有 author表:


author表

先插入3条数据:


插入后数据展示

开启两个事务 A 、B

事务A


事务A操作

事务B


事务B操作

然后继续执行事务A 还是只能看到3条数据


事务A操作

然后执行update操作:发现修改了4条数据 当前B事务为提交之前 会被锁住 B事务执行commit操作后 update操作会有以下修改


执行update结果

这就是幻读,读的时候发现是3条数据,而修改则能修改4条数据

引申:
1.数据库默认隔离级别:可重复读
2.MVCC多版本并发控制,当前读、快照读

一般的 select * from .... where ... 语句都是快照读

什么情况下使用的是当前读:(当前读,会在搜索的时候加锁)
select * from .... where ... for update select * from .... where ... lock in share mode update .... set .. where ... delete from. . where ..

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。