幻读和不可重复读的区别

不可重复读的重点是修改:  
同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

幻读的重点在于新增或者删除  
同样的条件, 第1次和第2次读出来的记录数不一样
当然, 从总的结果来看, 似乎两者都表现为两次读取的结果不一致.

但如果你从控制的角度来看, 两者的区别就比较大  
对于前者, 只需要锁住满足条件的记录  
对于后者, 要锁住满足条件及其相近的记录

不可重复读重点在于update
幻读重点在于insert,delete

时间: 2024-10-10 02:53:56

幻读和不可重复读的区别的相关文章

事务的四大特性&脏读、幻读、不可重复读的区别&事务的隔离级别

一.什么是事务 事务:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作:这些操作作为一个整体一起向系统提交,要么都执行.要么都不执行:事务是一组不可再分割的操作集合(工作逻辑单元): 事务的四大特性: 1 .原子性 (atomicity):强调事务的不可分割. 事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2 .一致性 (consistency):事务的执行的前后数据的完整性保持一致. 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态.因此

数据库事务隔离级别-- 脏读、幻读、不可重复读

一.数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted .Read committed .Repeatable read .Serializable ,这四个级别可以逐个解决脏读 .不可重复读 .幻读 这几类问题. √: 可能出现    ×: 不会出现   脏读 不可重复读 幻读 Read uncommitted √ √ √ Read committed × √ √ Repeatable read × × √ Serializable × × × 注意

Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)

1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约束没有被破坏 持久性:事务的提交结果,将持久保存在数据库中 2.事务并发会产生什么问题 1)第一类丢失更新:在没有事务隔离的情况下,两个事务都同时更新一行数据,但是第二个事务却中途失败退出, 导致对数据的两个修改都失效了. 例如: 张三的工资为5000,事务A中获取工资为5000,事务B获取工资为5

关于脏读、幻读和不可重复读

1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. e.g.         1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未提交事务)         2.Mary读取自己的工资 ,发现自己的工资变为了8000,欢天喜地!         3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000           像这样,Mary记取的工资数800

数据库隔离 脏读 幻读与不可重复读

一.隔离级别与现象 数据库隔离有4个级别 read uncomitted ,未授权读取 read committed ,授权读取 repeatable read , 可重复读 serializable ,串行化 可能产生的不一致的现象有3种 脏读 不可重复读 幻读 二.3种现象 脏读,就是读了脏数据:另一个事务修改了数据但未提交,我们读到了这个未提交的数据即脏数据,这种现象就是脏读: 举个栗子,balance字段值为100,另一个事务修改为200,未提交的时候我们读到了200,接着那个事务回滚了

数据库的脏读、幻读、不可重复读

1.脏读: 指一个事务A正在访问数据,并且对该数据进行了修改,但是这种修改还没有提交到数据库中(也可能因为某些原因Rollback了).这时候另外一个事务B也访问这个数据,然后使用了这个被A修改的数据,那么这个数据就是脏的,并不是数据库中真实的数据.这就被称作脏读. 解决办法:把数据库事务隔离级别调整到READ_COMMITTED 即让用户在更新时锁定数据库,阻止其他用户读取,直到更新全部完成才让你读取. 2.幻读: 指一个事务A对一个表中的数据进行了修改,而且该修改涉及到表中所有的数据行:同时

数据库中的脏读、幻读和不可重复读

1.数据脏读 事务a修改了某条数据,然后事务b读取了事务a修改的该条数据,然后事务a由于某些原因,事务a回滚了,这样事务b读到的数据就和回滚的数据不同了,这时事务b读取的数据就是脏数据. 概括来讲:就是一个事务读取了另一个事务未提交的数据. 2.数据幻读 事务a按一定条件读取了该表的一些数据,然后事务b想该表插入了一些满足事务a查询条件的数据,当事务a再次以相同条件查询数据时,会发现多出来一些数据,就好像产生了幻觉一样,我们称为幻读. 概括来讲,就是一个事物的两次查询,出现的查询数目不一致的情况

事务隔离级别区分,未提交读,提交读,可重复读

事务隔离超通俗好懂的的讲解 按照隔离的级别由低到高,越高的隔离,效率越差 0).DEFAULT 默认隔离级别,由数据库的数据隔离级别确定隔离级别       1).READ_UNCOMMIYTTED 都未提交的 级别最低             允许别的事务,去读取这个事务为提交之前的数据             缺点:可能会造成脏读.幻读.不可重复读.             例子讲解:店家对1000元商品进行降价500处理,数据更改,但未提交事务:             然后你查到降价将货

关于脏读、幻象读、不可重复读的理解

一般大家都对事务的四种隔离模式比较熟悉,从松到严依次是: - 读取未提交(Read uncommitted):处于此模式下可能会出现脏读.幻象读.不可重复读 - 读取已提交(Read committed):处于此模式下可能会出现幻象读.不可重复读 - 可重复读(Repeatable read):处于此模式下可能会出现幻象读 - 串行(Serialize):不会出现幻象读 那么脏读.幻象行.不可重复读是什么意思呢? - 脏读:其它的事务(执行单个 select 语句也算一个事务)可以读取到某个事务