跳到主要内容

isolation

事务与隔离级别

ACID 基础、隔离级别与并发异常,配合各引擎实现(MVCC/锁)。

要点

  • ACID 与提交边界;显式事务与自动提交;
  • 隔离级别:READ UNCOMMITTED/READ COMMITTED/REPEATABLE READ/SERIALIZABLE;
  • 并发异常:脏读、不可重复读、幻读;
  • MVCC 快照读与当前读的区分(实现依引擎而异)。

实务差异

  • 默认级别:MySQL InnoDB 默认 RR(可重复读),Postgres 默认 RC(读已提交);
  • RR 在 InnoDB 通过 MVCC+Next-Key 锁避免幻读,Postgres 通过 MVCC + predicate locks(部分场景)。

何时一致性读/加锁读

  • 一致性读:读多写少、报表查询,避免锁冲突;
  • 加锁读:强一致读取并即将更新(FOR UPDATE),注意范围条件引入的锁扩大。