要 精通 MySQL,你需要从「基础语法 → 性能优化 → 架构原理 → 运维能力」四个维度全面掌握。下面给你一份 真正系统、实战导向的 MySQL 精通地图(结合你平时做 NestJS / TypeORM / IoT 后台 的需求进行了优化)。
✅ 一、SQL 基础(必须扎实)
这些是任何复杂操作的基石:
1. 基本 CRUD
- select / insert / update / delete
- insert ignore / replace into / on duplicate key update
- where 条件、逻辑运算符
2. 多表查询
- inner join / left join / right join / full join
- union / union all
- 子查询(子查询 vs 关联查询的性能对比)
3. 排序、分页、分组
- group by + having
- order by
- limit / offset
- group_concat / json_arrayagg(你现在常用)
4. SQL 函数
- 字符串函数
- 日期时间函数
- 聚合函数
- JSON 系列函数(你已经在用)
✅ 二、数据库设计能力(高级开发必会)
这是工程能力的核心:
1. 三大范式 vs 反范式
- 第一、第二、第三范式
- 为什么有些时候要反范式(例如高性能读场景)
2. 索引设计
这是 MySQL 的灵魂
- B+Tree 原理(必须懂)
- 联合索引、最左匹配原则
- 索引失效情况(你必须非常熟)
- 覆盖索引
- 唯一索引 vs 普通索引
- 前缀索引
3. 表设计
- 数字型字段用 tinyint / int / bigint?
- decimal 和 float 的区别?
- varchar 长度设置(utf8mb4 注意点)
- json 字段性能问题
- 表拆分策略(垂直/水平)
✅ 三、事务与锁机制(精通的分界线)
理解锁 = 会写高并发系统
1. 事务 ACID
- 隔离级别(重点:RR、幻读、MVCC)
2. 锁类型
- 行锁、表锁、意向锁
- 共享锁 / 读锁(shared lock)
- 排它锁 / 写锁(exclusive lock)
- 间隙锁(gap lock)
- 临键锁(next-key lock)
- 如何避免死锁
✅ 四、执行计划与性能优化(高级工程师必会)
你经常写原生 SQL,这部分太重要了。
1. EXPLAIN
需要懂每个字段的含义:
- type (ALL / index / ref / range / const)
- key / key_len
- rows
- Extra(Using where、Using index、Using temporary、Using filesort)
2. 全局调优策略
- SQL 优化步骤
- 索引优化策略
- join 优化
- count(*) 优化方式
- in vs exists vs join 选择
✅ 五、存储引擎与原理(决定你的深度)
1. InnoDB 机制
- 页结构(Page)
- 聚簇索引
- 二级索引
- undo log / redo log
- MVCC 原理
2. MyISAM、Memory、Archive 对比
- 场景选择
✅ 六、高级功能(适合后台系统的场景)
1. 视图、触发器、存储过程
- 什么时候不要用?
- 业务代码 vs SQL 逻辑的分界
2. 事件调度器 event
你用 IoT、定时同步数据会很需要。
3. 分区表
- range
- list
- hash
- key
用于大数据量时提高性能。
✅ 七、数据库运维能力(入门 DBA)
1. 权限管理
- grant / revoke
- 用户权限与安全配置
2. 备份与恢复
- mysqldump
- xtrabackup(热备)
3. 主从、读写分离
适用于 NestJS 后台高并发系统。
✅ 八、MySQL + NestJS 实战能力
你使用 NestJS / 原生 SQL,这里必须掌握:
1. TypeORM 查询优化
- getRawMany
- query()
- leftJoinAndMap
- relations vs join 性能对比
2. restful 查询映射
- 分页查询
- 复杂多字段筛选
- 搜索(like, between, find_in_set)
3. IoT 后台常见 SQL 场景
- 分钟/小时数据填充
- 聚合统计
- 深分页优化(keyset pagination)
- 蓝牙/设备状态记录结构设计
📌 给你一份“精通 MySQL”路线图(从你现在水平开始)
你现在已经能写:
- join + json 聚合
- 子查询
- 原生 SQL 在 NestJS 里执行
所以你应该继续:
第一阶段(1 周)
- 索引、事务、锁(重点)
- explain 深入学习
第二阶段(1~2 周)
- MySQL 原理:B+Tree、MVCC、redo/undo
- join 的底层执行过程
第三阶段(1 周)
- SQL 性能调优实战
- 写 10 条复杂 SQL(我可以帮你逐条优化)
第四阶段(长期)
- 主从复制、分库分表、分区表
- 高并发监控与故障排查