看完 https://www.cnblogs.com/fjdingsd/p/5273008.html 的理解
举个栗子:
【脏读】
1,我转了100元给你
2,你读到了100元,以为收到了
3,我这边发生了错误,回滚了所有钱
4,你其实没有收到100元
总结:我这边还没提交呢,你怎么读都不是最终的结果,万一我回滚了,你就白搭了。(读取了未提交的数据)
【不可重复读】
1,在一个事务中,对一条数据
2,我先查了一遍,查出来结果是红色
3,你改了数据,改成原谅色
4,我正好又要查一遍,查出来居然是原谅色
总结:读了两次结果不同。(读取了已提交的数据)(同一条数据的更新)
【幻读】
1,我将一张表的所有数据从苍老师改成波多
2,此时,你向我的表插入了一条数据,名字叫苍老师
3,然后,我以为我改好了,去看一下我修改好的表,居然有一条苍老师,仿佛产生了幻觉
总结:读了两次结果不同(读取了已提交的数据)(同一批数据中有新数据插入)
------------------------------------------------
再来看下数据库的隔离级别:
【Read Uncommitted】
字面意思,读了未提交的,最不安全。
会脏读。
【Read Committed】
字面意思,读了已经提交的,
避免脏读。
(两次读出来的结果不一样,当然叫不可重复读啦)
【Repeatable】
字面意思,可以重复读
避免脏读,不可重复读。
(现在叫可以重复读啦)
【Serializable】
字面意思,串行化,序列化。
避免,脏读,不可重复读、幻读。
数据库查询隔离级别
select @@tx_isolation;
推荐一篇好文:
https://my.oschina.net/huangyong/blog/160012?p=2&temp=1488433678873
数据库事务隔离级别解析
本文通过生动的例子解释了数据库中的脏读、不可重复读及幻读现象,并详细介绍了四种隔离级别:Read Uncommitted、Read Committed、Repeatable Read 和 Serializable 的特点及应用场景。
2329

被折叠的 条评论
为什么被折叠?



