数据库知识总览
数据库知识总览
面向后端/SRE 工程师的数据库知识体系,覆盖 MySQL(核心)、PostgreSQL(进阶)和 Redis(缓存)三大组件,从原理到运维、从调优到故障排查。
知识体系总览
graph TB
subgraph MySQL核心
A1[体系架构/存储引擎]
A2[索引原理与优化]
A3[事务与锁机制]
A4[主从复制/高可用]
A5[备份恢复/慢查询]
end
subgraph PostgreSQL进阶
B1[架构与MVCC]
B2[索引与性能调优]
end
subgraph Redis缓存
C1[数据结构/使用场景]
C2[持久化/主从哨兵集群]
C3[缓存设计与常见问题]
end
subgraph 故障排查
D1[连接数/死锁]
D2[主从延迟]
D3[OOM/大Key]
end
A1 --> A2 --> A3
A3 --> A4 --> A5
C1 --> C2 --> C3
B1 --> B2
目录结构
07-Knowledge/database/
├── 数据库知识总览.md ← 你在这里
├── MySQL 体系架构与存储引擎.md
├── MySQL 索引原理与优化.md
├── MySQL 事务与锁机制.md
├── MySQL 主从复制与高可用.md
├── MySQL 备份恢复与慢查询优化.md
├── PostgreSQL 架构与核心特性.md
├── Redis 数据结构与缓存设计.md
└── Redis 高可用与集群方案.md
学习路线
🟢 入门阶段(1 周)
- 理解 MySQL 架构:连接器 → 分析器 → 优化器 → 执行器 → 存储引擎
- 掌握 InnoDB 核心特性:B+Tree、MVCC、Redo/Undo Log
- 学会 EXPLAIN 分析执行计划,会用
type/rows/Extra判断性能 - Redis 五种基本数据结构及常用命令
🟡 进阶阶段(2-3 周)
- 深入索引优化:覆盖索引、索引下推、前缀索引、联合索引最左前缀
- 掌握事务隔离级别与锁机制:行锁/间隙锁/Next-Key Lock
- MySQL 主从复制原理与 GTID、MGR 组复制
- Redis 持久化 RDB vs AOF、哨兵 vs Cluster
- 缓存穿透/击穿/雪崩的防护策略
🔴 高级阶段(持续)
- 分库分表方案设计与数据迁移
- MySQL 内核参数深度调优(Buffer Pool / Redo Log / 刷盘策略)
- PostgreSQL MVCC 与 VACUUM 机制
- Redis 源码级数据结构(SDS/ziplist/skiplist)
- 大规模数据库故障演练与容量规划
核心概念速查
| 概念 | 简述 | 相关笔记 |
|---|---|---|
| B+Tree | InnoDB 默认索引结构,叶子节点形成有序链表 | MySQL 索引原理与优化 |
| MVCC | 多版本并发控制,读写互不阻塞的基础 | MySQL 事务与锁机制 |
| Redo Log | 物理日志,crash recovery 保证持久性 | MySQL 体系架构与存储引擎 |
| Undo Log | 逻辑日志,回滚 + MVCC 读视图 | MySQL 事务与锁机制 |
| GTID | 全局事务 ID,简化主从切换 | MySQL 主从复制与高可用 |
| MGR | MySQL Group Replication,原生高可用方案 | MySQL 主从复制与高可用 |
| VACUUM | PG 回收死元组,防止事务 ID 回卷 | PostgreSQL 架构与核心特性 |
| RDB | Redis 快照持久化,fork + COW | Redis 高可用与集群方案 |
| AOF | Append Only File,命令日志持久化 | Redis 高可用与集群方案 |
| 缓存穿透 | 查不存在的数据直接打到 DB | Redis 数据结构与缓存设计 |
| 缓存雪崩 | 大量缓存同时过期导致 DB 压力陡增 | Redis 数据结构与缓存设计 |
常用工具链
MySQL 诊断: mysqltuner, pt-query-digest, pt-online-schema-change, gh-ost
MySQL 监控: PMM (Percona), mysqld_exporter + Prometheus + Grafana
PostgreSQL: pg_stat_statements, pgBadger, pgBackRest, Patroni
Redis 诊断: redis-cli --bigkeys, redis-cli --latency, redis-rdb-tools
Redis 监控: redis_exporter, RedisInsight
通用压测: sysbench, mysqlslap, redis-benchmark, pgbench
关联知识
- ../linux/Linux 内核调优总览 — 数据库依赖 NUMA、大页、IO 调度
- ../linux/cgroup v2 详解 — 容器化数据库资源隔离
- ../k8s/K8s 1.28-1.36 版本更新总结 — StatefulSet 管理有状态数据库
- ../k8s/特性详解/etcd 运维详解 — etcd 与数据库的共性问题
学习时间
| 阶段 | 预计时间 | 备注 |
|---|---|---|
| 目录搭建 | 2026-07-14 | 框架创建 |
| MySQL 核心 | 待定 | 体系架构/索引/事务/复制/备份 |
| PostgreSQL | 待定 | 架构 + MVCC + 调优 |
| Redis | 待定 | 数据结构/高可用/缓存设计 |
| 故障排查 | 待定 | 连接数/死锁/延迟/大Key |
状态标记
🌱 学习中 | 📖 已掌握 | 🔁 需复习 | 📝 待补充
这套体系从「会用」到「会修」到「会设计」,逐步深入。K8s 上的数据库运维(Operator、StatefulSet、备份调度)将单独开系列。