文档章节

一个幻象读的例子

猪刚烈
 猪刚烈
发布于 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
127
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
18
4
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部