数据库¶
MySQL 与 Redis 核心原理:日志、事务、索引、持久化与高可用
本章整理数据库相关的底层原理与面试高频知识点,分 MySQL 与 Redis 两部分。 MySQL 侧重「一条数据是怎么被安全地改掉的」(日志 + 事务 + 索引), Redis 侧重「内存数据怎么不丢、单机扛不住了怎么办」(持久化 + 哨兵 + 集群)。
MySQL¶
| 文档 | 主题 | 关键词 |
|---|---|---|
| ACID 与三大日志 | undo log / redo log / binlog 分工、WAL、崩溃恢复三阶段、两阶段提交 | WAL、脏页、checkpoint、2PC |
| 事务隔离级别 | 脏读 / 不可重复读 / 幻读,四种隔离级别取舍,RC vs RR 选型 | READ COMMITTED、REPEATABLE READ |
| MVCC 机制 | 隐藏列与 undo 版本链、Read View 可见性判定、快照读 vs 当前读 | DB_TRX_ID、Read View、next-key lock |
| B+ 树索引与优化 | 为什么是 B+ 树、聚簇索引与回表、最左前缀、覆盖索引、索引失效 | 聚簇索引、回表、ICP、EXPLAIN |
Redis¶
| 文档 | 主题 | 关键词 |
|---|---|---|
| 持久化:RDB / AOF / 混合 | BGSAVE 与 COW、appendfsync 三档、AOF 重写本质、混合持久化文件结构 | RDB、AOF、aof-use-rdb-preamble |
| 哨兵机制 | 主观/客观下线、Leader 选举、故障转移选主规则、脑裂防护 | SDOWN、ODOWN、quorum、min-replicas-to-write |
| 集群 Cluster | 16384 哈希槽、CRC16、MOVED vs ASK、hash tag、去中心化故障转移 | hash slot、CROSSSLOT、gossip |
阅读路径¶
- 面试速通:事务隔离级别 → MVCC → B+ 树索引 → Redis 持久化
- 搞懂「数据为什么不丢」:ACID 与三大日志 → Redis 持久化,两篇都有 MySQL 日志与 Redis AOF 的横向对比
- 搞懂「单机扛不住了怎么办」:哨兵机制(解决高可用)→ 集群 Cluster(解决高可用 + 容量/写扩展)
与其他章节的关联¶
- 架构 · 高并发秒杀系统设计 — Redis Lua 原子扣减、集群下的 hash tag 用法
- 架构 · 缓存 — 多级缓存读写策略、Write-Behind 为什么必须开 AOF
- 算法 · 布隆过滤器 — 缓存穿透的解法之一