关系型数据库学习路线
用阶段化路径组织关系型数据库学习,从基础概念到 SQL、设计、并发、优化、运维与 MySQL/PostgreSQL 对照实践。
#synthesis
#growing
#backend
#database
#mysql
#postgresql
[!info] related notes
- 所属 MOC:数据库 MOC、Backend Engineering MOC
- 核心关系:数据库事务、并发与恢复总览
- 产品:MySQL、PostgreSQL、SQLite
- 实践:本地 MySQL / PostgreSQL 环境
- 项目课程:BodySense 数据库工程深化课程 MOC
关系型数据库学习路线
[!abstract] 路线原则 按“关系与 SQL → Schema 与约束 → Page 与索引 → 查询计划 → 事务并发 → 日志恢复 → 产品差异与运维”学习。每阶段都用可复现实验验证,不把 ORM、索引口诀或某个数据库产品当完整数据库知识。
Stage 0:建立对象模型
阅读:
- [[z/database|数据库]]、DBMS;
- 关系型数据库;
- MySQL、PostgreSQL、SQLite。
验收:能解释 DBMS 为什么不只是“把 JSON 写到磁盘”,以及关系模型、约束、事务和查询优化各解决什么。
Stage 1:SQL 与关系操作
- DDL / DML / Query;
- Filter、Join、Aggregation、Subquery;
WHEREvsHAVING;- Pagination 与排序。
练习:从两到三张业务表写出创建、查询、更新、Join 和聚合,不依赖 ORM 生成 SQL。
Stage 2:Schema、Key 与约束
验收:能把业务不变量写成 Unique、Foreign Key、Check 或事务逻辑,而不只放在接口文档里。
Stage 3:Page、B+Tree 与索引
[[database-pages-and-buffer-pool|Page / Buffer Pool]]
→ [[b-plus-tree-database-index|B+Tree]]
→ [[clustered-and-secondary-indexes|聚簇 / 二级索引]]
→ [[composite-and-covering-database-indexes|联合 / 覆盖索引]]
→ [[database-index-selectivity-and-cost|选择性与代价]]
练习:生成足够数据,对比全表扫描、单列索引、联合索引、覆盖索引和大量回表。
Stage 4:查询执行与优化
验收:能从 estimated vs actual rows、Scan Type、Join Order、Sort、Buffer / I/O 找到慢查询的主要成本,而不是只看“是否命中索引”。
Stage 5:事务、并发与恢复
先读 事务、并发与恢复总览,再深入:
练习:用两个连接复现 Non-repeatable Read、Lock Wait、Deadlock、Lost Update,并观察不同隔离级别和锁定读。
Stage 6:产品差异
重点不是谁“更好”,而是理解存储组织、类型系统、索引、隔离和运维语义为什么不同。
Stage 7:工程化与运维
- Schema Migration / Backward Compatibility;
- Backup / Restore / PITR;
- Replication / Failover;
- Connection Pool / Capacity;
- Slow Query / Lock / Bloat / Vacuum;
- 权限、Secret、审计和测试。
实践入口:
每个知识点的掌握层级
L1 Define → 能说是什么
L2 Explain → 能解释机制和因果
L3 Reproduce → 能用 SQL / 多连接实验复现
L4 Diagnose → 能看计划、锁、日志和指标定位
L5 Design → 能按不变量、负载和故障选择方案
面试高频至少达到 L2;简历项目中的关键数据库能力达到 L3~L4。
最小项目闭环
选择一个真实业务模块:
Requirement
→ ER / Schema / Constraints
→ Query Patterns
→ Index Design
→ Transaction Boundary
→ Migration
→ Integration Test
→ EXPLAIN and Load Test
→ Backup / Recovery Plan
比单独刷几十条索引口诀更能形成专业能力。
自测清单
- 能从业务规则设计 Schema 和 Constraint。
- 能从 Page I/O 解释 B+Tree。
- 能设计联合索引并用实际计划验证。
- 能解释 RC / RR、MVCC、锁和并发异常。
- 能说明 WAL / Undo / Redo 与提交恢复。
- 能复现 Lock Wait / Deadlock 并定位阻塞事务。
- 能安全做 Schema Migration 和 Rollback。
- 能把数据库与 Redis、Kafka、Elasticsearch、MinIO 的边界讲清。