"Mvcc"
- PostgreSQL MVCC + Lock Model:為什麼 PG 比 MySQL 少 deadlock、但 vacuum 是別的代價
PG 用 *MVCC-heavy + 少 explicit lock* 的並行控制、跟 MySQL InnoDB 的 *lock-based*(record / gap / next-key)相反。本文走 MVCC 機制(tuple version + xmin/xmax + visibility)、PG 4 種 lock(row-level / table-level / advisory / predicate)、預測 SERIALIZABLE 行為、5 production 踩雷(idle transaction 卡 vacuum / SELECT FOR UPDATE 跨 transaction / advisory lock 沒釋放 / bloat 不是 vacuum 問題 / predicate lock 在 SSI 下 rollback)、跟 MySQL lock-contention sibling 對比