脏读,不可重复读,幻读-----生动理解
2021-03-26 10:11:44 0 举报
Mysql脏读,不可重复读,幻读-----生动理解
作者其他创作
大纲/内容
A
结论:在读未提交的隔离级别中,客户端A读到了客户端B未提交的修改数据,出现了脏读
设置隔离级别读未提交
重复读的隔离级别下使用了MVCC(multi-version concurrency control)机制,select操作不会更新版本号,是快照读(历史版本);insert、update和delete会更新版本号,是当前读(当前版本)。
可以看见脏读问题已经解决
update account set balance=balance-50 where id=1;
设置隔离级别读已提交
出现幻读
select * from account;
start transaction;
读未提交的隔离级别
客户端A执行新增的数据的更新操作
可重复读的隔离级别
读已提交的隔离级别
客户端B新增没有出现幻读
执行更新操作,减id1的余额50
提交事务commit
新打开客户端B,插入数据
可重复读的隔离级别能解决幻读吗?
间隙锁,锁的就是两个值之间的空隙。
接下来验证幻读
B
没有出现不可重复读
提交事务
可以看见出现了不可重复读的问题,前后数据不一致读已提交解决不了不可重复读
0 条评论
下一页