🐘 PostgreSQL 隔离级别交互演示
左:事务 A 的步骤 | 中:事务 B 的步骤 | 右:每个事务此刻看到的世界 / 数据库真实状态
场景:
脏读 (Dirty Read)
不可重复读 (Non-Repeatable Read)
幻读 (Phantom Read)
写偏序 (Write Skew · 医生值班)
丢失更新 (Lost Update)
隔离级别:
READ UNCOMMITTED (PG 实际=RC)
READ COMMITTED (PG 默认)
REPEATABLE READ (Snapshot Isolation)
SERIALIZABLE (SSI)
A 执行下一步 ▶
B 执行下一步 ▶
自动播放 ▶▶
重置 ↺
事务 A
idle
事务 B
idle
📊 数据视图
数据库当前真实状态(已 COMMIT)
事务 A 看到的世界
事务 B 看到的世界
系统消息
💡
玩法
:选一个并发现象 + 隔离级别,按
A 执行下一步
和
B 执行下一步
交错推进事务, 观察「数据视图」面板里两边各自看到的快照差异。
✅ 在「不可重复读」选 RC 必现,选 RR/SR 现象消失;在「写偏序」必须选 SR 才能被 SSI 阻止。