美文网首页
脏读 不可重复读 幻读

脏读 不可重复读 幻读

作者: 衣忌破 | 来源:发表于2019-04-28 00:33 被阅读0次

什么是事务

在了解脏读 不可重复读 幻读之前,有必要先理解事务(transaction)的定义及其目的。

  • 定义

数据库事务(简称:事务)是[数据库管理系统]中的一个逻辑单位,由一个有限的[数据库]操作序列构成。

  • 目的
  1. 为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
  2. 当多个[应用程序]在[并发]访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

什么是脏读 不可重复读 幻读

  1. 脏读

脏读又称无效数据的读出,是指在数据库访问中,[事务]T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

  1. 不可重复读

不可重复读,是指在数据库访问中,一个[事务]范围内两个相同的查询却返回了不同数据。
这是由于查询时系统中其他事务修改的提交而引起的。比如事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

  1. 幻读

幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样。

可见造成脏读 不可重复读 幻读的原因都是在事务在commit提交前有其它事务对同样的数据进行了操作 干扰了事务读取的结果。

以上文字可能解析得些许抽象,可以看下图

1.png

相关文章

  • 数据库事务隔离级别

    脏读 不可重复读 幻读

  • 数据库事务隔离级别

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

  • mysql知识点

    mysql概览 一些基本问题 事务 事务相关基本问题 脏读 丢失修改 不可重复读 幻读 不可重复读 vs 幻读不可...

  • 理解事务的隔离特性

    理解事务的隔离特性 脏读、不可重复读、幻读 脏读:读到别的事务还未提交的修改 不可重复读:读到别的事务已提交的修改...

  • 事务隔离级别

    Mysql锁(七)丢失更新,脏读,不可重复读,幻读 ****这些问题的出现的原因**** 之所以出现更新丢失,脏读...

  • SQL事务隔离级别和MySQL事务隔离级别

    RU 隔离级别:Read Uncommitted 读未提交不允许脏写,会发生脏读,不可重复读,幻读。 RC 隔离级...

  • 事物隔离级别以及事物传播属性

    事物隔离级别 事物隔离级别是为解决脏读、幻读、不可重复读脏读:尚未被确定提交的数据被其他事物读取到幻读:进行sel...

  • 系统原理-MVCC

    在SQL标准中,RR是无法避免幻读问题的,但是InnoDB实现的RR避免了幻读问题。RR解决脏读、不可重复读、幻读...

  • mysql数据mvcc版本控制原理

    事务并发执行遇到的问题 脏读(未提交读) 不可重复读(已提交读) 幻读(读出新纪录) 事务隔离级别 隔离级别脏读不...

  • Innodb事务隔离级别和锁之间的关系

    1.事务特性: 2.事务隔离级别: 1.读未提交。 脏读,不可重复读,幻读。2.读已提交。 不可重复读。3.可重复...

网友评论

      本文标题:脏读 不可重复读 幻读

      本文链接:https://www.haomeiwen.com/subject/niflnqtx.html