幻读和不可重复读的区别

转载 2014年09月15日 20:51:27

不可重复读

不可重复读的重点是修改:

同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

例子:

在事务1中,Mary 读取了自己的工资为1000,操作并没有完成 

Java代码  收藏代码
  1. con1 = getConnection();  
  2. select salary from employee empId ="Mary";  


在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务. 
Java代码  收藏代码
  1. con2 = getConnection();  
  2. update employee set salary = 2000;  
  3. con2.commit();  


在事务1中,Mary 再次读取自己的工资时,工资变为了2000 
Java代码  收藏代码
  1. //con1  
  2. select salary from employee empId ="Mary";  


在一个事务中前后两次读取的结果并不致,导致了不可重复读。


幻读

幻读的重点在于新增或者删除

同样的条件, 第1次和第2次读出来的记录数不一样

例子:

目前工资为1000的员工有10人。 
事务1,读取所有工资为1000的员工。 

Java代码  收藏代码
  1. con1 = getConnection();  
  2. Select * from employee where salary =1000;  
共读取10条记录 

这时另一个事务向employee表插入了一条员工记录,工资也为1000 
Java代码  收藏代码
  1. con2 = getConnection();  
  2. Insert into employee(empId,salary) values("Lili",1000);  
  3. con2.commit();  


事务1再次读取所有工资为1000的员工 
Java代码  收藏代码
  1. //con1  
  2. select * from employee where salary =1000;  


共读取到了11条记录,这就产生了幻像读。 

脏读、不可重复读、幻读

锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。一般来说,锁可以防止脏读、不可重复读和幻觉读。 事务并发...

数据库的脏读、不可重复读、幻读以及不可重复读和幻读的区别

介绍数据库的脏读、不可重复读、幻读都和事务的隔离性有关。所以先了解一下事务的4大特性。 事务的4大特性(ACID):原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部...
  • stu_hsj
  • stu_hsj
  • 2015年06月23日 11:14
  • 5989

幻读与不可重复读区别

不可重复读与幻读比较相似,都是在一个事务中多次读取到不同的数据。网络上的总结如下 不可重复读:所谓的虚读,也就是大家经常说的不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数...
  • ianhol
  • ianhol
  • 2016年04月14日 13:21
  • 1944

对于脏读,不可重复读,幻读的一点理解,看懂红字很关键

事务4个隔离界别 Read Uncommitted, Read commited, Repeatable read, Serializable Read Uncommitted.  最低的隔离级别...

理解数据库事务隔离级别以及脏读, 不可重复读, 幻读

数据库事务的4个特性: 原子性(atomic): 都成功或者都失败; 一致性(consistency):事务操作之后,数据库所处的状态和业务规则是一致的;比如a,b账户相互转账之后,总金额不变; ...

数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)

一、数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,...
  • JIESA
  • JIESA
  • 2016年05月04日 18:36
  • 30076

mysql脏读、不可重复读、幻读(虚读)

1、事务的特性:经常作为面试 l  原子性:指处于同一个事务中的多条语句是不可分割的。 l  一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如,转账,转账前两个账户余额之和为...

MySQL脏读、虚读、幻读

事务的特性: 原子性:指处于同一个事务中的多条语句是不可分割的。 一致性:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。比如转账,转账前两个账户余额之和为2k,转账之后也应该是2K。 隔离...

幻读和如何防止幻读

RR 隔离演示: mysql> show create table rr_100\G; CREATE TABLE `rr_100` ( `id` bigint(20) NOT NULL defaul...

读提交和可重复读区别

读提交: 务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。造成了不可重复读(虚读)。 可重复读: 事务A读取与搜索条件相匹配的若干行。...
  • tolcf
  • tolcf
  • 2015年10月21日 22:23
  • 6156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:幻读和不可重复读的区别
举报原因:
原因补充:

(最多只允许输入30个字)