栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于幻读和不可重复读的理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于幻读和不可重复读的理解

不可重复读和幻读

我们知道不可重复读和幻读是因为并发执行多个事务时导致的"误读"的结果.很多时候我们无法区分不可重复读和幻读之间到底有什么不同.感觉大部分人的描述推到最后发现这两者都是同一个事务中前后读取的结果不一样.在此,我阐述一下我自己的理解
不可重复读和幻读都是一个事务在前后两次读取同一个记录集合时读取到的结果不一样.区别在于不可重复读读取到的结果不一样的原因是因为该记录集合中某些记录的值发生了改变;而幻读读取到的结果不一样的原因是因为该记录集合由于其他事务的写操作而导致该记录集合中多出了几条之前没有的纪录.
针对不可重复读,MySQL提供了read repeatable的隔离级别,表示可重复读.可重复读的意思是在同一个事务内部,后面的读操作读取的结果都是源于第一次读操作读取后生成的稳定的视图中的结果.换一种说法,在不可重复读的情况下,幻读是不可能发生的.因为前后读取到的结果一定是一致的.
幻读只出现在多次读操作读取的都是记录集合中最新的情况时.是指在多次读取的中间过程中,其他事务向该记录集合中插入了新的不曾出现过的记录.针对幻读,MySQL提供了serializable的隔离界别,表示序列化,即针对一个事务,只有该事务中的所有操作执行完之后,才允许其他事务执行.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943372.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号