幻读Java_关于幻读 - hellopretty - 博客园
不可重复读
在同一事务中,两次读取同一数据,得到内容不同,侧重点在于数据修改
幻读
同一事务中,用同样的操作读取两次,得到的记录数不相同,幻读的侧重点在于两次读取的纪录数量不一致
不可重复读和幻读在概念上有些交叉,对于不可重复读来说,在同一个事务中,如果读取到的记录数量发生变化,也可以看作是一种不可重复读,同样,对于幻读来说,同一个事务中的读取结果数量一致,但是内容发生了变化,也可以看成是一种不可重复读。
对于mysql,这里讨论一下read committed和repeatable read两个事务隔离级别的不可重复读和幻读:
read committed:
在read committed隔离级别下,存在不可重复读和幻读现象。
起两个事务1和2,1采用快照读读取数据,2修改其中一条满足1查询条件的数据并提交,这时1再快照读一次,就会发现2添加的记录,这就是不可重复读。但如果1采用当前读方式读取数据,由于读取数据的时候会给满足条件的数据加锁,因此,事务2无法修改数据内容,如果单纯从数据内容发生变化这个方面来考虑的话,是不会出现不可重复读的问题的。同时,如果考虑到记录数量增减,由于read committed隔离级别并没有gap锁,所以虽然不能修改采用当前读方式锁定的数据,但是可以在查询条件满足的范围内增加新的数据,这也可以看作是一种不可重复读,但显然这种情况划分到幻读更好。
repeatable read:
在repeatable read隔离级别下,mysql不仅解决了不可重复读,还通过gap锁的引入,解决了幻读的问题。
具体分析与上边类似,只是在repeatable隔离级别下,如果事务2对某些数据作了更新,事务1通过快照读已经不会读取到数据变化,所以repeatable read隔离级别解决了不可重复读的问题。同时由于引入了gap锁,事务2也无法在事务1采用当前读的前提下在事务1的查询条件满足范围内插入新的数据,所以记录数量不会发生变化,也就不存在幻读问题。
当隔离级别是可重复读,且禁用innodb_locks_unsafe_for_binlog的情况下,才可以利用gap锁避免幻读,gap锁是为了保证语句级别binlog的串行化。
总结:
如果仅仅考虑数据内容发生变化来衡量不可重复读,那么只有在read committed隔离级别的快照读中才会出现不可重复读,如果考虑数据数量变化,那么在read committed隔离级别的快照读和当前读中都存在不可重复读现象;
read committed隔离级别下,快照读和当前读都会产生幻读现象;
repeatable read隔离级别下,只有快照读会产生幻读现象,当前读已经通过gap锁的引入消除了幻读现象。
(何登成大神在博客中将幻读的定义限制在当前读的前提下,个人认为还是幻读和可重复读的具体定义不清晰)
幻读Java_关于幻读 - hellopretty - 博客园相关推荐
- 圈复杂度函数Java_圈复杂度 - byron_nj - 博客园
Cyclomatic Complexity 1. 概念 a. 圈复杂度是一种衡量代码复杂程度的标准. b. 圈复杂度高的害处: 圈复杂度大说明代码的判断逻辑复杂,可能质量低: 需要的更多的测试用例,难 ...
- unix c线程同步的三种方法:互斥量、读写锁以及条件变-xhb8413-ChinaUnix博客
unix c线程同步的三种方法:互斥量.读写锁以及条件变-xhb8413-ChinaUnix博客 unix c线程同步的三种方法:互斥量.读写锁以及条件变 2012-03-30 14:42:38 分类 ...
- logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF
使用OracleLogminer同步Demo1Demo介绍-博客园 使用Oracle Logminer 同步Demo 1 Demo 介绍 1.1 Demo 设想 前面介绍了Oracle LogMine ...
- 笔记:编程的一些建议 - 时间伙伴 - 博客园
笔记:编程的一些建议 0.今天偶然和同学聊到Eric Steven Raymond的<大教堂与集市>,想起可能会有些同学没看过,给个链接吧.http://www.yeeyan.com/ar ...
- 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...
- 博客园的“随笔、文章、新闻、日记有啥区别”
随笔:是一些比较杂乱的技术类东西且有待修改和讨论的文章,假如是原创则只是作者随时提笔写下的内容,而并没有经过太多的推敲,甚至措辞也没有得到很合理的运用. 文章:直接获得的有正规性质的文章,或当随笔中的 ...
- 博客园----你真的没有没落.感恩博客园。。。
前言 拒绝谩骂!~~~~~~欢迎拍砖.!!!我不是博客园的托哦!~我只是一个普普通通的诶提(IT)人而已!~~好吧! 我打从心底的感恩博客园. 大家都知道,这些有一篇帖子引起了大家的关注<即将没 ...
- 限制会话id服务端不共享_会话控制 - able-woman - 博客园
会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段.而会话,就是用户通过浏览器和服务器的一次通话. 为什么要有会话控制? 因为HTTP协议是无状态的,服务器不知道用户上一次做 ...
- 一套简约漂亮的响应式博客园主题皮肤分享给你们(一)
转载:https://www.cnblogs.com/hafiz/p/7573464.html 一.背景 最近在自己博客园逛的时候,总会有一个感觉,真是太丑了,然而又觉得自己暂时抽不出太多的时间来搭建 ...
- 2007年度最具投资价值100强网站揭晓——博客园榜上有名
经过400多专家和数百万名网友们3个多月的共同推荐和评价,万众瞩目的"2007年度中国最具投资价值100网站"在北京揭晓,大会挖掘出锐意创新.最具投资价值的网站,这些网站在技术.模 ...
最新文章
- Java的系统Property
- 「SDOI2014」数数 解题报告
- LeetCode 875. 爱吃香蕉的珂珂(二分查找)
- greenplum 替代mysql_转:MySQL到Greenplum迁移分析
- GBDT、随机森林、xgboost算法原理解析视频公开
- 快到起飞 | PP-LCNet在CPU上让模型起飞,精度提升且比MobileNetV3+快3倍
- QCC3007--打印库文件 log
- Mathpix Snip他们都说好用!我也试一试尝试下载-安装-使用
- python安装jupter在线ide
- 蜂鸣器播放天空之城详细解析
- 为程序员准备的英语学习资料
- 计算机组成原理--填空,简答,判断,计算大题
- STM32基础12--数模转换(DAC)
- mysql数据库安装错误报错Falled不成功,感叹号
- 由save is not vaild without active transcation引发的问题
- 一个摆烂年轻人对手机的需求
- 君正 Halley6 开发板调试SPI LCD
- StarUML3.0.1的破解方法
- html给下拉菜单设置背景色,如何更改下拉菜单活动背景的颜色(即。tk.列表框)在一个ttk.组合框...
- 电脑用摄像头 质量不错的几个型号 旧手机接电脑当摄像头 iriun webcam
热门文章
- Centos7 无线网络设置
- win10外接显示器后无声音 解决方案
- uni-app 小程序dom转img 生成海报插件Painter;解决引入网络图片真机显示空白问题;解决生成的图片模糊问题
- 大江大河未来10年:中国人改变命运的的七次机遇
- mysql备份和优化_MySQL优化|数据库的备份和恢复|MySQL高级
- 七年切图仔如何面试大厂web前端?(沟通软技能总结) | 掘金技术征文
- 5G无线关键技术 — 新型传输波形技术和先进编码与调制技术
- MSP430F149的看门狗定时器
- 标准误 Standard error 简单解释
- PHP命名空间 namespace 及 use 的用法