精通 mysql 要掌握哪些

43 阅读3分钟

精通 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(我可以帮你逐条优化)

第四阶段(长期)

  • 主从复制、分库分表、分区表
  • 高并发监控与故障排查