美文网首页
测试技能提升篇——脏读、不可重复读、幻读的区别

测试技能提升篇——脏读、不可重复读、幻读的区别

作者: 测试开发Kevin | 来源:发表于2022-09-13 09:52 被阅读0次


脏读

事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

不可重复读

事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。

脏读与不可重复读的区别

在于前者读到的是其他事务未提交的数据,后者读到的是其他事务已提交的数据。

可重复读

与不可重复读相对应的就是可重复读,当使用可重复读隔离级别时,A事务在执行期间会锁定该事务以任何方式引用的所有行,即使事物B修改了A事物引用的行,A也不会读到!这样就不会导致读取统一数据时结果不一致的问题。

幻读

系统管理员A将数据库中所有学生的成绩从具体分数改为ABCD等级,但是系统管理员B就在这个时候插入了一条具体分数88的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。幻读就是你一个事务用一样的 SQL 多次查询,结果每次查询都会发现查到一些之前没看到过的数据。注意,幻读特指的是你查询到了之前查询没看到过的数据。

不可重复读的和幻读区别

二者很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。

本质

其实,脏写、脏读、不可重复读、幻读,都是因为业务系统会多线程并发执行,每个线程可能都会开启一个事务,每个事务都会执行增删改查操作。然后数据库会并发执行多个事务,多个事务可能会并发地对缓存页里的同一批数据进行增删改查操作,于是这个并发增删改查同一批数据的问题,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。

相关文章

  • 数据库事务隔离级别

    脏读 不可重复读 幻读

  • 测试技能提升篇——脏读、不可重复读、幻读的区别

    脏读 事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 不可重复读 事务 A 多次读取同一...

  • 数据库事务隔离级别

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

  • 理解事务的隔离特性

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

  • mysql知识点

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

  • 事务隔离级别

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

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

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

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

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

  • 系统原理-MVCC

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

  • Innodb-行锁

    基本概念 脏读是指读到别的事务未提交的修改。不可重复度读与幻读的区别,不可重复读的重点在于update和delet...

网友评论

      本文标题:测试技能提升篇——脏读、不可重复读、幻读的区别

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