此页内容

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

309字约1分钟

2025-02-15

脏读:一个事务读取到另一个事务未提交的数据,如果这个未提交的事务最终被回滚,那么第一个事务读取到的数据就是脏的;

不可重复读:在同一个事务中,读取同一个数据两次,由于其他事务的提交,导致两次读取的结果不同;

幻读:在同一事务中,执行相同的查询操作,返回的结果集由于其他事务的插入而发生变化。

几种读和隔离级别的关系:

  • 读未提交允许脏读;
  • 读已提交可防止脏读,但可能出现不可重复读;
  • 可重复读可防止脏读和不可重复读,但仍可能出现幻读;
  • 串行化可防止三种可能,但性能开销较大。

不可重复读和幻读的区别

不可重复读指在事务执行期间,多次读取对同一条数据,数据的内容因为别的事务提交修改的数据导致发生改变;而幻读则是数据的总量发生改变。