2025·12·14 深入 Deep dive 14 min · postgres
Postgres 的 lock 為什麼總是違反我的直覺
SELECT FOR UPDATE 的鎖範圍不是你想的那樣。一篇關於 row-level lock、advisory lock、與我踩過的三個坑。
長文——整理中。
三個坑
FOR UPDATE對LEFT JOIN的未匹配列不會上鎖FOR UPDATE SKIP LOCKED看起來像 queue 的 primitive,但連續 skip 會讓你讀不到剛被 rollback 的那筆- advisory lock 的命名空間是整個 DB cluster,不是單一 DB