首页 / 知识库 / python服务端进阶 / 数据库锁详解

数据库锁详解(以 PostgreSQL 为主线)

目标:2 小时,彻底搞懂「数据库为什么要加锁、有哪些锁、它们到底有什么区别」。

本教程重原理、重思路,不深挖底层实现。用并发冲突的真实场景驱动,让你不再被一堆锁名词绕晕,能说清楚「什么场景该用哪种锁」。

这篇教程适合谁?

  • 学过 PostgreSQL 事务,但对「锁」还是一团浆糊的同学
  • 听过「行锁、表锁、乐观锁、悲观锁、MVCC」这些词,但说不清区别的同学
  • 遇到过「数据被并发改乱了」「死锁」「更新丢失」,想搞懂根源的同学

学完你能做到

  1. 说清楚数据库为什么需要锁(并发会带来什么问题)
  2. 分清锁的两种分类维度:按粒度(表锁/行锁)和按模式(共享锁/排他锁)
  3. 讲清楚乐观锁 vs 悲观锁的区别和各自适用场景
  4. 理解 PostgreSQL 的杀手锏 MVCC——为什么它能做到「读写不互相阻塞」
  5. 看懂死锁是怎么产生的,以及怎么避免
  6. 面对一个并发场景,能选出合适的加锁策略

为什么以 PostgreSQL 为主线?

结合你的技术栈(Python + FastAPI + PostgreSQL),本教程用 PostgreSQL 讲解。

特别说明:PostgreSQL 的并发控制核心是 MVCC(多版本并发控制),和 MySQL InnoDB 在实现细节上有明显不同(比如 PostgreSQL 没有 InnoDB 那种「间隙锁」的概念)。本教程讲通用的锁理论,并落到 PostgreSQL 的具体做法上。理论是相通的,换成别的数据库也能举一反三。

目录(建议按顺序学)

第一部分 · 理解篇(搞懂「为什么」)

  • 01 - 为什么需要锁

第二部分 · 分类篇(把锁理清楚)

  • 02 - 按粒度分:表锁与行锁
  • 03 - 按模式分:共享锁与排他锁
  • 04 - 乐观锁与悲观锁

第三部分 · PostgreSQL 篇(落到实处)

  • 05 - MVCC:PostgreSQL 的并发杀手锏
  • 06 - 死锁:产生、排查与避免

第四部分 · 总结篇

  • 07 - 总结:一张表看懂所有锁

怎么用这份教程?

  • 赶时间:看 01 建立动机,再看 04(乐观/悲观)和 05(MVCC),抓住最实用的部分。
  • 想系统学:从头按顺序读,重点理解每章的「一句话本质」和对比表格。

开始吧 → 01 - 为什么需要锁