文档章节

一个幻象读的例子

猪刚烈
 猪刚烈
发布于 2014/10/12 11:41
字数 323
阅读 5
收藏 0

      近期工作中遇到一个BUG报重复提交会生成两条同样的记录。因为这种数据的一个字段在一定范围内不允许重名(并不是全表数据不允许重名因此这个字段没有unique约束),所以每次保存记录时会先检查有没有重名,如果没有重名才会保存。但是在重复提交过程中若操作间隔足够短就会出现以下情况:
      第一个事务首先查询,结果没有重名,接着第二个事务也开始查询,结果也没有重名,然后第一个事务插入数据并提交,接着第二个事务也将同样一份数据插入,因为没有unique约束,因此也插入成功。假设第二个事务在提交之前再查询是否有重名就会发现已经存在重名了,这样第一次查询就是典型的“幻象读”。幻象读的标准描述如下:


      杜绝幻象读必须使用最高的隔离级别,即事务串行化。

 

NOTE:如无特别设定,程序总是使用数据库的默认隔离级别。mysql的默认级别是第三级:REPEATABLE-READ。

本文转载自:http://blog.csdn.net/bluishglc/article/details/6215547

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
【伸手】数据库并发问题的简单复现例子(java)?

数据库事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。 有没有这些问题的简单复现例子?

itwriter
2017/03/26
142
1
MySQL InnoDB存储引擎的事务隔离级别

我们知道,在关系数据库标准中有四个事务隔离级别: 未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 提交读(Read Committed):只能读取到已经提交的...

miyae
2014/03/25
0
0
Oracle Data Concurrency and Consistency一之Oracle事务隔离级别

越来越多的接触并发、吞吐量、锁、一致性等等问题,很多时候也经常听到一些说系统性能太低,加并发提高性能,这往往是泛泛之谈。 把握不清楚问题的症结、问题源,并发很有可能不仅对性能无益...

hawk682808
2013/11/27
0
0
数据库事务及锁机制介绍

事务介绍 因为一直使用Spring这种声明式的事务管理,一直以为事务的主要作用是对一个业务方法中多次执行数据库操作的最终提交。近期重新了解了下事务,有了新的认识。数据库事务除了有异常回...

EveryDayNew
2016/01/13
581
0
mysql事务隔离级别 脏读,不可重复读,幻象读

1.事务里一些有问题的读取:脏读,不可重复读,幻象读 脏读 (dirty read)事务T1更新了一行记录的内容,但是并没有提交所做的修改。事务T2读取更新后的行,然后T1执行回滚操作,取消了刚才所...

rotiwen
2013/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery

语法 描述 实例 $("*") 选取所有元素 在线实例 $(this) 选取当前 HTML 元素 在线实例 $("p.intro") 选取 class 为 intro 的 <p> 元素 在线实例 $("p:first") 选取第一个 <p> 元素 在线实例 ...

mskk
10分钟前
0
0
微信红包设计方案

前言 微信红包一经推出,春节期间微信用户红包总发送量达80.8亿,红包峰值40.9w/秒,在如此量级下,系统设计存在各种变数,稍有闪失会功亏一篑。 红包系统 红包系统有三部分组成:信息流,业...

春哥大魔王的博客
20分钟前
0
0
微信开发-正式号的配置

1、设置相关 业务域名的设置(不设置的话,相关页面会显示防欺诈盗号信息提示) JS接口安全域名设置 网页授权域名设置 注意:以上三个设置中都有下载文件的提示,此文件内容一样,下载一个即可...

Code辉
25分钟前
1
0
微服务之Eureka服务发现

当调用API或者发起网络通信的时候,无论如何我们都要知道被调用方的IP和服务端口,大部分情况是通过域名和服务端口,事实上基于DNS的服务发现,因为DNS缓存、无法自治和其他不利因素的存在,...

架构师springboot
25分钟前
0
0
spring boot2 admin login

版本: admin server 配置 admin client 配置 参考资料

showlike
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部