到底什么是脏读,不可重复读,幻读

236 阅读2分钟

「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」

mysql默认隔离级别

!!! mysql隔离级别是不可重复读

  • 脏读,不可重复读,幻读在不同场景下有不同使用。银行相关的是不可能接受脏读现象的。但部分情况我们也不能接受不可重复读。具体情况得有取舍。下面我们了解下具体三种情况

什么事脏读、不可重复读、幻读

  • 上面提到了三种异常数据情况,作为一名合格的程序员我们需要知道不同的隔离级别会给我们造成具体什么样的伤害。

    脏读

    • 脏读指的是A事物在操作数据,还未进行提交此时B事物就已经感知到数据的变化了。这是我们最不能接受的。这里以个人举例,大学期间看中一款手机但是囊中羞涩需要爸妈支援下,打电话让爸妈赚钱这里我们理解成A事物,我着急用钱我是B事物,此时A事物向zxh这张表新增了money=5000元的一条数据。B事物在修改zxh这张表中money这个字段。如果我们是读未提交隔离级别。那么A事物刚新增完事物还未提交,B事物却已经可以修改了。那么B事物修改成功后就结束了。这个时候如果A事物因为别的原因出现异常了。那么就需要将add的5000进行回滚,回滚后余额出现负数。这个负数对于银行来说就是坏账。

    不可重复读

    • 顾名思义就是同一条数据多次读取并不能保证数据一致性。这是因为A事物第一次读完数据后B事物修改了相同的数据行。那么A事物在此读取该数据就会发生不可重复读。

    幻读

    • 不可重复读是针对同一条数据内容的变化。而幻读针对的是表记录的变化。还是A事物第一次查询数据匹配到10条,第二次相同条件匹配到的是20条。这就是幻读。