用简单的例子讲一下 脏读,幻读,不可重复读

戏说一下事务中的脏读,幻读,和不可重复读

脏读:事务A在执行的过程修改了数据库中的数据,这时事务B插了进来,读取到了事务A修改之后的数据并且提交了上去,这时事务A由于某些原因进行了回滚,那么事务B读取的就是事务A的脏数据

  相当与你在外面吃烧烤,然后有一块肉掉了,恰好掉到了一个外出觅食的蚂蚁面前,蚂蚁立即掉头回去报告,这是你把掉的肉捡了起来,当蚂蚁带他的兄弟们回来的时候,发现没有肉,这时候蚂蚁带给蚁群的就是脏数据。

不可重复读:事务A读取了一组数据,在执行逻辑的时候,事务B修改了这条数据,当事务A再次读取时候,发现数据前后不一致了,这就是不可重复读。

  相当与你在外面吃烧烤,掉了一块肉,恰好掉到了一个外出觅食的蚂蚁面前,蚂蚁回去报告,这是你把掉的肉捡了起来,却意外的碰掉了桌子上的韭菜,这是你叹了一口气,说不想捡了,当蚂蚁带他的兄弟们回来的时候,发现这个地方不是肉,而是韭菜,这时候蚂蚁带给蚁群的就是不可重复读数据

幻读:事务A根据条件读取了数据,这时事务B插了进来,修改了数据库里的数据,导致事务A在做第二次查询的时候发现第二次读取的数据比第一次要多,这就是幻读

  相当与你在外面吃烧烤,掉了一块肉,恰好掉到了一个外出觅食的蚂蚁面前,蚂蚁回去报告,你不想捡了,这时你又掉了一块,你叹了一口气也没捡,当蚂蚁带他的兄弟们回来的时候,发现这个不是一块肉,而是两块,这时候蚂蚁带给蚁群的就是幻读数据

原文地址:https://www.cnblogs.com/liouzeshuen/p/10429869.html