跳转到内容

阶段五 · 并发与锁

隔离级别的差异,本质上只是「什么时候取快照」的差异——所以这一阶段必须在阶段三之后读。

  • 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 写一个多消费者任务队列,并说明它为什么不会重复消费。