脏读、幻读、不可重复读
来源:互联网 发布:华为nova2下载软件 编辑:程序博客网 时间:2024/06/05 01:12
脏读:无效的数据读出(Read out of invalid data)。
读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。
脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
幻读:
幻读是指当事务不是独立执行时发生的一种现象。
事务A读取与搜索条件相匹配的若干行。事务B以插入或删除行等方式来修改事务A的结果集,然后再提交。
幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样.一般解决幻读的方法是增加范围锁RangeS,锁定检索范围为只读,这样就避免了幻读。
在数据库定义的四种隔离级别中
最高隔离级别SERIALIZABLE_READ可以保证不出现幻读的问题。
Repeatable Read (RR)
针对当前读,RR隔离级别保证对读取到的记录加锁 (记录锁),同时保证对读取的范围加锁,新的满足查询条件的记录不能够插入 (间隙锁),不存在幻读现象。
不可重复读
不可重复读,是指在数据库访问中,一个事务范围内两个相同的查询却返回了不同数据。
这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。
一种更易理解的说法是:在一个事务内,多次读同一个数据。在这个事务还没有结束时,另一个事务也访问该同一数据。那么,在第一个事务的两次读数据之间。由于第二个事务的修改,那么第一个事务读到的数据可能不一样,这样就发生了在一个事务内两次读到的数据是不一样的,因此称为不可重复读,即原始读取不可重复。
注:以上皆来自《百度百科》。
- 脏读,不可重复读,幻读
- 脏读、幻读、不可重复读
- 脏读、不可重复读、幻读
- 脏读,幻读,不可重复读
- 脏读 幻读 不可重复读
- 脏读、幻读、不可重复读
- 脏读 幻读 不可重复读
- 脏读、不可重复读、幻读
- 脏读、不可重复读、幻读
- 脏读 幻读 不可重复读
- 脏读,不可重复读,幻读
- 脏读,不可重复读,幻读
- 脏读 幻读 不可重复读
- 脏读,不可重复读,幻读
- 脏读、不可重复读、幻读
- 脏读、不可重复读、幻读
- 脏读,不可重复读,幻读
- 脏读、不可重复读、幻读
- 比赛中使用文件输入输出
- 深度学习-学习笔记--深度学习中的epochs,batch_size,iterations详解
- Linux驱动:LCD驱动框架分析
- bos项目day04 区域一键上传功能:参数分隔符和赋值符号使用规则
- css超链接中的下划线设置
- 脏读、幻读、不可重复读
- 【C++】判断是不是2、3、4的幂数
- 转载自博客园不思蜀的转载文章:最大子序列和算法分析
- 171120-函数程序练习【连续第二十八天】
- mybatis入门之简单操作
- 通俗易懂的依赖注入
- (ACM)Digital Roots
- 实验6 图的遍历
- (四) java并发编程--线程安全和资源共享