阶段五 · 并发与锁
隔离级别的差异,本质上只是「什么时候取快照」的差异——所以这一阶段必须在阶段三之后读。
- Read Committed / Repeatable Read 的快照规则差异 → 详见
- 可串行化快照隔离(SSI):Postgres 独有的实现,以及它的代价
- 行锁与表锁的完整矩阵,哪些 DDL 会阻塞读
- 死锁的形成与
deadlock_timeout SELECT ... FOR UPDATE SKIP LOCKED实现任务队列- 在线加索引 / 加列 / 改类型的无锁做法
- Postgres 的 Repeatable Read 和 SQL 标准差在哪?为什么它不会发生幻读?
- 为什么
READ UNCOMMITTED在 Postgres 里没有意义? - SSI 如何检测串行化冲突?代价是什么?
- 为什么某些
ALTER TABLE会阻塞读?如何在线加索引不锁表? - 用
SKIP LOCKED写一个多消费者任务队列,并说明它为什么不会重复消费。