Skip to content

MySQL 8.4 LTS 知识手札 ​

← 数据库手札 | 查看 MySQL 学习路线

本手札与路线页一一对应。默认实验基线是 MySQL 8.4 LTS;MySQL 9.x 只出现在第 12 站升级支线。

MySQL 十二站学习地图

共享实验库 ​

每站的 SQL 都可以在可丢弃的 mysql_course 数据库中运行。第一次进入先执行:

sql
SELECT VERSION() AS server_version;
SELECT @@SESSION.sql_mode AS sql_mode;
SELECT @@character_set_server AS charset_name,
       @@collation_server AS collation_name;

版本、SQL mode、字符集和时区会改变 SQL 行为。任何结论都要同时记录环境,不要只保存查询结果截图。

12 站目录 ​

  1. 实验环境与服务器地图
  2. 类型、约束与建模
  3. 安全 CRUD 与查询语义
  4. JOIN、聚合与结果粒度
  5. CTE、窗口与 JSON
  6. 索引与执行计划
  7. 优化器与性能证据
  8. 事务、隔离与 MVCC
  9. 锁、死锁与在线变更
  10. InnoDB、日志与持久性
  11. 安全、备份与恢复
  12. 复制、高可用与升级

使用方式 ​

每站先读 index,再完成专题笔记中的无答案练习,最后打开 99-exercise-answers。答案用于核对机制和证据,不用于替代实验。

总练习 ​

为什么“SQL 在我的机器上能运行”不足以证明它可以上线?列出至少四项还必须记录的环境或运行证据。

查看第 1 站答案

数据库实验的证据链 ​

每次实验至少保存四样东西:

  1. 环境快照:版本、SQL mode、隔离级别、字符集、时区和自动提交。
  2. 输入脚本:建表、种子数据、会话设置,能够重复执行或明确清理。
  3. 观察结果:查询结果、EXPLAIN、锁等待、状态变量或复制位置。
  4. 结论边界:结论在哪些数据量、并发、版本和故障条件下成立。

遇到问题先走这条路 ​

  • 结果不对:先确认连接的 schema、事务是否已提交、NULL 和时区语义。
  • 查询变慢:先看实际扫描行数、锁等待、返回数据量,再讨论索引。
  • 写入冲突:记录事务开始时间、访问顺序、隔离级别和错误码。
  • 宕机担忧:确认 redo/binlog/备份链和最近一次恢复演练,而不是只看配置。
  • 复制异常:同时检查 GTID、SQL/IO 线程、延迟、错误队列和应用重连。
  • 升级前:先在影子实例回放 schema、查询、备份恢复和连接器认证。

三种学习入口 ​

  • 新手:先做 1~5 站,学会写安全 SQL、看结果粒度和用 EXPLAIN 提问。
  • 有经验者:从 6~10 站反查线上慢查询、事务和锁问题;不要跳过两会话实验。
  • 运维/架构者:重点完成 11~12 站的恢复、复制、RPO/RTO 与升级回滚演练。

当你能用一张图解释“应用写入 → 事务日志 → 数据页 → 复制/恢复”,并能用实验复现一次阻塞或恢复,才算真正从会写 SQL 走到会解释数据库。

用心记录每一步成长