跳到主要内容

数据库专题引言

本专题从日常开发最常踩坑的三类能力切入:索引、事务与锁、隔离级别。目标不是罗列 SQL 语法,而是建立可迁移的心智模型——理解存储引擎在做什么,再反推该如何写查询、如何设计表、如何排查慢 SQL 与并发问题。

默认以 MySQL + InnoDB 为主线(业界最常见的 OLTP 组合);概念层对 PostgreSQL 等引擎同样适用,差异会在文中点出。


为什么要系统学这三块​

主题解决什么问题不懂时的典型症状
索引查得快、写得稳、扫表可控慢查询、全表扫描、索引建了却用不上
事务一组操作要么全成功要么全失败部分写入、对账不平、回滚后状态错乱
锁与隔离级别多事务同时读写时的正确性与吞吐脏读、幻读、死锁、接口偶发超时

索引偏「读路径与存储结构」;事务、锁、隔离级别偏「写路径与并发控制」。二者在 InnoDB 里通过 B+ 树索引 + MVCC + 行锁 交织在一起。


学习路线图​

graph TD
A["数据库总览"] --> B["索引体系"]
A --> C["事务基础"]
B --> B1["索引类型与结构"]
B --> B2["优化与失效场景"]
C --> D["隔离级别"]
C --> E["锁机制"]
D --> F["并发问题复盘"]
E --> F
B2 --> F

建议顺序:

  1. 索引总览 → 类型与结构 → 优化与失效
  2. 事务基础 → 隔离级别 → 锁
  3. 用真实 SQL 在本地 MySQL 验证 EXPLAIN、事务现象与死锁日志

若需要先补底层树结构,可先读数据结构专题中的 B 树与 B+ 树,再回到本专题的索引实践。


文档地图​

索引​

文档内容
索引总览为什么需要索引、聚簇/二级索引、回表与覆盖
索引类型主键、唯一、联合、前缀、全文等
索引优化最左前缀、失效场景、EXPLAIN、设计原则

事务与并发​

文档内容
事务基础ACID、提交/回滚、undo/redo 直观理解
隔离级别读未提交~可串行化、脏读/不可重复读/幻读、MVCC
锁机制行锁/间隙锁/临键锁、意向锁、死锁与排查

阅读约定​

  • 先结论,后机制:每篇尽量先给可落地的判断,再展开原理。
  • 以 InnoDB 默认行为为准:例如默认隔离级别为 REPEATABLE READ。
  • 示例 SQL 可直接实验:建议在测试库验证,不要在生产库试锁与长事务。
  • 与数据结构互补:本专题讲「数据库怎么用结构」;树的定义与性质见 data-structures/。

从 索引总览 或 事务基础 任选一条线开始即可。