数据库的脏读、不可重复读和幻读分别是什么?

March 17, 2025 / 老大 / 12阅读 / 0评论/ 分类: 数据库

回答重点

  • 脏读(Dirty Read)

  • 一个事务可以读取到另一个事务未提交的数据,如果该未提交的事务最终被回滚,那么第一个事务读取到的数据就是不一致的(脏数据)。

  • 不可重复读(Non-repeatable Read)

  • 在一个事务中,多次读取同一条数据时,因其他事务的提交导致读取结果不一致。

  • 幻读(Phantom Read)

  • 在同一事务中,执行相同的查询操作,因其他事务的插入或删除数据导致读取结果数量不一致。

与隔离级别的关系

  • √表示可能发送

  • ×表示不会发生

隔离级别

脏读

不可重复读

幻读

读未提交

读已提交

×

可重复读

×

×

串行化

×

×

×

不可重复读 VS 幻读

幻读是指在事务期间,对于数据总量的突然增加或减少,将其他事务提交的读取到了(针对数据的数量);

不可重复读是指对于同一条数据,在事务执行期间,这条数据的字段值发生了变化,读取到了其他事务提交修改的数据(针对数据的内容)。

#Oracle(1)#MySQL(21)

评论