跳转至

数据库隔离级别

一、三种问题

脏读

读到未提交的数据。

不可重复读

同一事务内,两次读结果不一样(别人 update)。

幻读

同一事务内,两次读行数不一样(别人 insert)。

二、四个隔离级别

隔离级别 脏读 不可重复读 幻读
读未提交
读已提交
可重复读 ✅(InnoDB 解决)
串行化

三、MySQL 默认

可重复读(REPEATABLE READ)。

四、Oracle 默认

读已提交(READ COMMITTED)。

五、怎么选

  • 金融:串行化/可重复读。
  • 互联网:读已提交。

六、MVCC

可重复读靠 MVCC 实现。

一句话

RC 防脏读,RR 防不可重复读,串行化防幻读。