MySQL 118 题 · 8 周刷题排期
挂靠在半年工作规划的第 1-8 周(MySQL 基础与备份恢复、故障排查与性能优化)。题源是数据库面试题库总览里去重后的 MySQL 118 道,题号为原站编号。
每天要过的题和进度打勾,用 打卡版 更顺手——它会自动认出「今天」。
怎么用(不额外占时间)
| 时间 | 动作 | 时长 |
|---|---|---|
| 通勤/午休 | 读当天那几道题的题干,先自己想答案,别看考点 | 10 分钟 |
| 晚上 21:00 开工前 | 合上答案口述一遍,卡住的记进 issues-log.md |
5 分钟 |
| 周六实操前 | 把本周卡住的 3-5 道重答一遍(这是唯一需要「复习」的环节) | 10 分钟 |
为什么这样排:输入放碎片时间,输出放在动手之前。口述不出来的题,说明那个知识点还没长在身上,标红就行,不用当场背。
全 8 周总览
| 周 | 日期 | 主题 | 题数 | 每日 |
|---|---|---|---|---|
| 第1周 | 11.2-11.8 | 环境地基 + MySQL 单机 | 19 | 3-4 道 |
| 第2周 | 11.9-11.15 | 主从复制 | 12 | 2 道 |
| 第3周 | 11.16-11.22 | 备份与恢复 | 9 | 1-2 道 |
| 第4周 | 11.23-11.29 | 主从进阶 + 月度收口 | 11 | 1-2 道 |
| 第5周 | 11.30-12.6 | 观测能力:先能看见问题 | 10 | 1-2 道 |
| 第6周 | 12.7-12.13 | SQL 优化:explain 是听诊器 | 23 | 3-4 道 |
| 第7周 | 12.14-12.20 | 故障演练一:可用性类 | 14 | 2-3 道 |
| 第8周 | 12.21-12.27 | 故障演练二 + 月度收口 | 20 | 3-4 道 |
| 合计 | 118 |
第1周(11.2-11.8)环境地基 + MySQL 单机
配套实验:Docker 起 MySQL 8.0;改一条数据,用 show binlog events 看到它
这 19 道是整条线的地基。答不出来没关系,做实验时回来对一遍答案骨架。
周一 11.2 4 道
-
#589详细描述一条 SQL 语句在 MySQL 中的执行过程。进阶 -
#2626MySQL 的体系结构是怎样的?其主要组件的功能是什么?进阶 -
#590MySQL 的存储引擎有哪些?它们之间有什么区别?进阶 -
#2629MySQL 中 InnoDB 存储引擎与 MyISAM 存储引擎的区别是什么?进阶
周二 11.3 3 道
-
#625从 MySQL 获取数据,是从磁盘读取的吗?(buffer pool)进阶 -
#2654MySQL 中的 Buffer Pool 和 Query Cache 是如何影响数据库性能的?进阶 -
#2665如何在 MySQL 中调优 InnoDB Buffer Pool?进阶
周三 11.4 3 道
-
#626MySQL 的 Change Buffer 是什么?它有什么作用?进阶 -
#627MySQL 的 Doublewrite Buffer 是什么?它有什么作用?基础 -
#628MySQL 中的 Log Buffer 是什么?它有什么作用?基础
周四 11.5 3 道
-
#2640MySQL 的查询优化器如何选择执行计划?进阶 -
#2637MySQL 的分区表(Partition Table)是什么?它的结构是怎样的?有哪些优势?进阶 -
#2643MySQL 中的查询缓存是什么?如何配置查询缓存?进阶
周五 11.6 3 道
-
#1477相比于 Oracle,MySQL 的优势有哪些?进阶 -
#11175SQL 中 select、from、join、where、group by、having、order by、limit 的执行顺序是什么?进阶 -
#106MySQL 中的日志类型有哪些?binlog、redo log 和 undo log 的作用和区别是什么?进阶
周六 11.7 3 道
-
#1534什么是 Write-Ahead Logging (WAL) 技术?它的优点是什么?MySQL 中是否用到了 WAL?进阶 -
#9498MySQL 事务的二阶段提交是什么?进阶 -
#10385MySQL 插入一条 SQL 语句,redo log 记录的是什么?进阶
第2周(11.9-11.15)主从复制
配套实验:Docker 一主一从 → 升级 GTID → 故意造 3 个复制错误再修
复制就是「主库 binlog 的消费过程」,所以昨晚那 4 道日志题是这周的前置。
周一 11.9 2 道
-
#620什么是 MySQL 的主从同步机制?它是如何实现的?进阶 -
#2632MySQL 的主从复制原理是什么?常见的复制类型有哪些?进阶
周二 11.10 2 道
-
#618如何在 MySQL 中避免单点故障?进阶 -
#619如何在 MySQL 中实现读写分离?进阶
周三 11.11 2 道
-
#621如何处理 MySQL 的主从同步延迟?进阶 -
#2720MySQL 中的半同步复制是如何工作的?进阶
周四 11.12 2 道
-
#2717MySQL 中的 GTID(Global Transaction ID)在数据复制中的作用是什么?进阶 -
#12251什么是数据全量同步和增量同步?它们各有什么优缺点?基础
周五 11.13 2 道
-
#12255什么是 CDC(Change Data Capture)?常见的 CDC 工具有哪些?基础 -
#12256什么是批量数据入库?相比单条插入有什么优势?基础
周六 11.14 2 道
-
#12258多线程并发同步数据时(数据库的数据同步到数仓中)需要注意什么问题?基础 -
#12252什么是游标 Cursor 分页?相比传统 LIMIT OFFSET 分页有什么优势?基础
第3周(11.16-11.22)备份与恢复
配套实验:XtraBackup 全备→增备→恢复;删库演练 + binlog 补数据(PITR)
本周实验最重(一次完整删库恢复),所以题量压到 9 道。做演练时把这 9 道的答案骨架当检查清单用。
周一 11.16 2 道
-
#2608在 MySQL 中如何执行数据库备份和恢复操作?进阶 -
#2691MySQL 中的备份和恢复策略是什么?包括物理备份和逻辑备份进阶
周二 11.17 2 道
-
#2701MySQL 中 mysqldump 和 mysqlpump 工具的区别是什么?进阶 -
#2697如何在 MySQL 中使用 Percona XtraBackup 工具进行热备份?进阶
周三 11.18 2 道
-
#2694MySQL 的 binlog 日志在数据恢复中的作用是什么?深入 -
#2707MySQL 中如何使用 mysqlbinlog 工具进行二进制日志恢复?进阶
周四 11.19 1 道
-
#2704如何在 MySQL 中配置和管理 GTID(Global Transaction ID)以实现数据恢复?进阶
周五 11.20 1 道
-
#2700如何在 MySQL 中进行数据库的灾难恢复?进阶
周六 11.21 1 道
-
#2710MySQL 中如何设置和管理备份策略以实现自动化备份?进阶
第4周(11.23-11.29)主从进阶 + 月度收口
配套实验:一主两从;从库延迟排查;半同步;binlog 三种格式对比
高可用这几道只要求「说清架构和切换代价」,不要求你现在搭出来——第 9、10 周才动手。
周一 11.23 2 道
-
#2711MySQL 的 MHA(Master High Availability)架构是什么?如何进行配置?深入 -
#2727MySQL 的 MHA 和 Group Replication 有什么区别?进阶
周二 11.24 2 道
-
#2714如何在 MySQL 中配置 Galera Cluster 以实现多主复制?深入 -
#2722如何在 MySQL 中实现多主复制?深入
周三 11.25 2 道
-
#2724如何在 MySQL 中配置和使用 ProxySQL 以实现高可用性?进阶 -
#2730MySQL 的 NDB Cluster 如何实现高可用性?进阶
周四 11.26 2 道
-
#3179如何实现数据库的不停服迁移?进阶 -
#622什么是分库分表?分库分表有哪些类型(或策略)?基础
周五 11.27 2 道
-
#623如果组长要求你主导项目中的分库分表,大致的实施流程是?进阶 -
#2635MySQL 中如何实现分库分表?常见的分库分表策略有哪些?进阶
周六 11.28 1 道
-
#624对数据库进行分库分表可能会引发哪些问题?进阶
第5周(11.30-12.6)观测能力:先能看见问题
配套实验:慢日志 + performance_schema + sys 库 + Grafana 面板
5 道监控题正好对应你在搭的东西。周五装完 Prometheus 再回看 2648、2662 会有全新理解。
周一 11.30 2 道
-
#2651如何在 MySQL 中配置和使用慢查询日志?进阶 -
#2648MySQL 的性能监控工具有哪些?比如 Performance Schema 和 InnoDB Monitor 的功能是什么?进阶
周二 12.1 2 道
-
#2662如何配置和使用 MySQL 的 Performance Schema?进阶 -
#2657如何在 MySQL 中使用 pt-query-digest 工具来分析查询性能?进阶
周三 12.2 2 道
-
#2659如何使用 MySQL 的 Event Scheduler 来定期执行优化任务?进阶 -
#631如何在 MySQL 中监控和优化慢 SQL?进阶
周四 12.3 2 道
-
#616MySQL 中如何进行 SQL 调优?进阶 -
#4040MySQL 数据库的性能优化方法有哪些?进阶
周五 12.4 1 道
-
#2675MySQL 中常见的 JOIN 优化策略有哪些?进阶
周六 12.5 1 道
-
#629为什么在 MySQL 中不推荐使用多表 JOIN?进阶
第6周(12.7-12.13)SQL 优化:explain 是听诊器
配套实验:explain 逐字段精读;5 个真实慢 SQL 改造
本周题量最大(23 道),是整套题库里最值钱的一块——索引和执行计划几乎每场面试都问。
周一 12.7 4 道
-
#591MySQL 的索引类型有哪些?基础 -
#601为什么 MySQL 选择使用 B+ 树作为索引结构?进阶 -
#11623为什么 MySQL 索引用的是 B+ 树而不是红黑树?进阶 -
#600请详细描述 MySQL 的 B+ 树中查询数据的全过程深入
周二 12.8 4 道
-
#592MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别?进阶 -
#593MySQL 中的回表是什么?进阶 -
#594MySQL 索引的最左前缀匹配原则是什么?基础 -
#595MySQL 的覆盖索引是什么?进阶
周三 12.9 4 道
-
#596MySQL 的索引下推是什么?进阶 -
#597在 MySQL 中建索引时需要注意哪些事项?基础 -
#598MySQL 中使用索引一定有效吗?如何排查索引效果?进阶 -
#599MySQL 中的索引数量是否越多越好?为什么?进阶
周四 12.10 4 道
-
#1479在什么情况下,不推荐为数据库建立索引?进阶 -
#2672如何在 MySQL 中优化索引以提高查询性能?进阶 -
#12132MySQL 二级索引有 MVCC 快照吗?进阶 -
#2689MySQL 中的 Full-Text Search 索引如何优化全文检索?进阶
周五 12.11 4 道
-
#612如何使用 MySQL 的 EXPLAIN 语句进行查询分析?进阶 -
#2680如何在 MySQL 中使用EXPLAIN ANALYZE命令优化查询?进阶 -
#1214MySQL 中LIMIT 100000000, 10和LIMIT 10的执行速度是否相同?基础 -
#630MySQL 中如何解决深度分页的问题?进阶
周六 12.12 3 道
-
#617MySQL 中的数据排序是怎么实现的?基础 -
#2683MySQL 中的 Query Rewrite 插件是什么?如何使用它来优化查询?进阶 -
#9499MySQL 三层 B+ 树能存多少数据?进阶
第7周(12.14-12.20)故障演练一:可用性类
配套实验:主库宕机切换;主从延迟;把时间线写成标准故障报告
这 13 道事务与锁,是为第 8 周的「锁等待堆积 / 死锁」故障做理论准备。周二的延迟故障演练,用 621 的骨架当排查清单。
周一 12.14 3 道
-
#602MySQL 是如何实现事务的?深入 -
#606MySQL 中的事务隔离级别有哪些?基础 -
#607MySQL 默认的事务隔离级别是什么?为什么选择这个级别?基础
周二 12.15 3 道
-
#608数据库的脏读、不可重复读和幻读分别是什么?进阶 -
#604MySQL 中的 MVCC 是什么?深入 -
#605如果 MySQL 中没有 MVCC,会有什么影响?深入
周三 12.16 2 道
-
#603MySQL 中长事务可能会导致哪些问题?进阶 -
#609MySQL 中有哪些锁类型?进阶
周四 12.17 2 道
-
#610MySQL 的乐观锁和悲观锁是什么?进阶 -
#611MySQL 中如果发生死锁应该如何解决?进阶
周五 12.18 2 道
-
#1535你们生产环境的 MySQL 中使用了什么事务隔离级别?为什么?进阶 -
#2686如何在 MySQL 中避免和优化死锁问题?进阶
周六 12.19 2 道
-
#2646MySQL 中如何实现分布式事务?进阶 -
#632MySQL 中 DELETE、DROP 和 TRUNCATE 的区别是什么?进阶
第8周(12.21-12.27)故障演练二 + 月度收口
配套实验:磁盘写满;连接数打满;误删表 binlog 闪回;5 类故障手册
表设计与数据类型偏记忆、难度低,放在月度收口周刚好——这周你精力主要在故障手册和博客上。
周一 12.21 4 道
-
#613MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?基础 -
#614MySQL 中 int(11) 的 11 表示什么?基础 -
#615MySQL 中 varchar 和 char 有什么区别?基础 -
#1478MySQL 中 VARCHAR(100) 和 VARCHAR(10) 的区别是什么?基础
周二 12.22 4 道
-
#1217MySQL 中 DATETIME 和 TIMESTAMP 类型的区别是什么?基础 -
#1379在 MySQL 中存储金额数据,应该使用什么数据类型?基础 -
#1377MySQL 中 TEXT 类型最大可以存储多长的文本?进阶 -
#1378MySQL 中 AUTO_INCREMENT 列达到最大值时会发生什么?进阶
周三 12.23 3 道
-
#12134MySQL一张表最多可以有多少列?基础 -
#1219数据库的三大范式是什么?基础 -
#9805MySQL 在设计表(建表)时需要注意什么?进阶
周四 12.24 3 道
-
#4944什么是数据库的逻辑外键?数据库的物理外键和逻辑外键各有什么优缺点?进阶 -
#4943什么是数据库的逻辑删除?数据库的物理删除和逻辑删除有什么区别?基础 -
#1476为什么不推荐在 MySQL 中直接存储图片、音频、视频等大容量内容?进阶
周五 12.25 3 道
-
#1418什么是数据库的视图?进阶 -
#633MySQL 中 INNER JOIN、LEFT JOIN 和 RIGHT JOIN 的区别是什么?基础 -
#1482MySQL 中 EXISTS 和 IN 的区别是什么?基础
周六 12.26 3 道
-
#1376在 MySQL 中,你使用过哪些函数?基础 -
#1419什么是数据库的游标?进阶 -
#1218为什么阿里巴巴的 Java 手册不推荐使用存储过程?进阶
现实校准(2026-11-09 记):第 1 周已经过去了
今天是 11.9(第 2 周周一)。第 1 周那 19 道如果没做完,不要往前挤,也不要熬夜补,按这个算术走:
- 第 2、3 周题量本来就轻(12 道和 9 道),把第 1 周剩下的按每天 2 道叠进去,两周正好吃完;
- 三道不能省:
#106(三种日志的区别)、#589(一条 SQL 的执行过程)、#9498(两阶段提交)——这三道是后面所有题的底层,其它 16 道可以往后挪,这三道不行; - 如果第 1 周连 Docker 和 MySQL 都没跑起来,先补环境,题往后放——题是用来检验实验的,没有实验,刷题就是背课文。