第4章 事务、锁与 MVCC
🎯 本章学习目标
- 记住 PG 支持的四种隔离级别、默认
READ COMMITTED,以及它对READ UNCOMMITTED的处理方式(当作 RC)。 - 理解 PG 的 MVCC 实现:每行带
xmin/xmax系统列,靠事务快照(snapshot)决定可见性——和 InnoDB 用 undo log 版本链是同一目标、不同实现。 - 校准三大与 InnoDB 的心智差异:① PG 没有间隙锁(gap lock);② RC 下 PG 是「语句级快照」而 InnoDB RC 是「行级读最新提交」;③ RR 下 PG 用快照隔离,写冲突直接报错而非加锁等待。
- 会用
SELECT ... FOR UPDATE/FOR SHARE/SKIP LOCKED/NOWAIT,尤其SKIP LOCKED是 PG 做「任务队列」的神器。 - 理解 事务 ID 回卷(XID wraparound) 风险与 autovacuum / VACUUM 的关系,知道「表不 vacuum 会怎样」。
- 会查锁等待与死锁:
pg_stat_activity、pg_locks、deadlock_timeout。 - 在 Java 侧正确设置隔离级别与自动提交,理解 JDBC autocommit 语义与 MySQL 一致。
关注公众号,免费阅读全文
请免费关注 预见猿份 公众号,发送:yjoffer.com,获取解锁密码
微信扫码关注关注公众号回复获取密码后,在下方输入并点击解锁,本机后续再读无需重复输入。
