🗄️ 分库分表
数据库进阶知识体系总览
当单库 MySQL 撑不住业务增长时,分库分表和读写分离就成了架构进阶的必经之路。面试中,这类高阶数据库话题往往出现在 P7+ 或架构师岗位,但中高级开发的面试也越来越常问,毕竟这是真实业务中必然会遇到的挑战。
一、知识体系总览
Section titled “一、知识体系总览”1.1 学习路径
Section titled “1.1 学习路径”第1阶段 慢查询优化 → EXPLAIN 分析、索引优化第2阶段 读写分离 → 主从复制、延迟处理第3阶段 分库分表 → 水平/垂直拆分、路由算法第4阶段 分布式事务 → 两阶段提交、TCC第5阶段 中间件 → ShardingSphere、MyCat1.2 核心知识点思维导图
Section titled “1.2 核心知识点思维导图” 数据库进阶 │ ┌───────────┬─────────────┼─────────────┐ ▼ ▼ ▼ ▼ 慢查询优化 读写分离 分库分表 分布式事务 │ │ │ │• EXPLAIN • 主从复制 • 水平拆分 • 2PC• 索引优化 • 延迟处理 • 垂直拆分 • TCC• 分页优化 • 路由策略 • 路由算法 • Seata• 执行计划 • 强制读主 • 分布式主键 • 最终一致性1.3 面试重点总结
Section titled “1.3 面试重点总结”| 专题 | 考察频率 | 难度 | 核心能力 |
|---|---|---|---|
| 慢查询优化 | ★★★★★ | 中 | EXPLAIN 分析 |
| 索引优化 | ★★★★★ | 高 | 索引选择 |
| 读写分离 | ★★★★☆ | 中 | 主从延迟处理 |
| 分库分表 | ★★★★★ | 高 | 路由算法设计 |
| 分布式事务 | ★★★★☆ | 高 | 事务一致性 |
二、三大核心专题
Section titled “二、三大核心专题”🔄 读写分离
🔍 慢查询优化实战
三、面试难度分布
Section titled “三、面试难度分布”| 知识点 | 初级面试 | 中级面试 | 高级面试 |
|---|---|---|---|
| 读写分离原理 | 偶尔 | ✅ 常问 | ✅ 必问 |
| 主从延迟问题 | ❌ 少问 | ✅ 常问 | ✅ 必问 |
| 分表策略选择 | ❌ 少问 | ✅ 常问 | ✅ 必问 |
| 分布式主键 | ❌ 少问 | ✅ 常问 | ✅ 必问 |
| 跨分片查询 | ❌ 少问 | 偶尔 | ✅ 必问 |
| ShardingSphere | ❌ 少问 | 偶尔 | ✅ 常问 |
| 慢查询优化 | ✅ 常问 | ✅ 必问 | ✅ 必问 |
| 分库分布式事务 | ❌ 少问 | ❌ 少问 | ✅ 常问 |
四、数据库架构演进
Section titled “四、数据库架构演进”阶段一:单库单表 └── 适合:用户 < 100万,QPS < 1000
阶段二:读写分离 └── 主库写,从库读,缓解读压力 └── 适合:读多写少,用户 < 500万
阶段三:垂直分库 └── 按业务拆分数据库(用户库/订单库/商品库) └── 减轻单库连接数压力
阶段四:水平分表 └── 订单表按 user_id 分 16 张表 └── 适合:单表数据量 > 1000万
阶段五:分库分表 └── 水平拆分到多个数据库的多张表 └── 适合:超大数据量,超高并发
阶段六:NewSQL / 分布式数据库 └── TiDB、OceanBase 等,自动分片五、核心技巧总结
Section titled “五、核心技巧总结”| 场景 | 关键技巧 | 注意事项 |
|---|---|---|
| 慢查询 | EXPLAIN 分析 | 关注 type、key、rows |
| 索引优化 | 覆盖索引 | 避免回表 |
| 读写分离 | 延迟感知 | 强制读主或延迟处理 |
| 分库分表 | 路由算法 | 取模 vs 范围 |
| 分布式事务 | 最终一致 | 补偿机制 |