连载中 22/22

收官复盘:一张 MySQL 作战地图

2026-05-13 · 3930 阅读 · 0 评论 · 0 赞

完结,但地图要常翻

从那条 8 秒的订单 SQL 开始,22 篇写完:索引、事务、锁、日志、主从、调优、治理、备份。最后一篇不添新知识,只做一件事——把散落的内容拼成一张出事时能直接翻的作战地图。未来你遇到问题,先查下面的症状索引,再跳对应篇目。

作战地图:症状 → 篇目 → 第一动作

症状第一动作复习篇目
接口变慢,不知道谁干的开慢日志抓 SQL第 1 篇
EXPLAIN 看不懂先看 type、key、rows、Extra第 2 篇
建了索引还是慢按失效写法清单排查第 4、5 篇
走不走索引看心情ANALYZE TABLE + optimizer trace第 6 篇
数据对不上、口径飘忽核对隔离级别与事务边界第 7、8 篇
Deadlock 报错SHOW ENGINE INNODB STATUS 看案发第 9 篇
主从数据不一致查 binlog 与两阶段提交配置第 10 篇
改完读旧数据延迟治理 + 写后读主第 12、13 篇
主库挂了按高可用选型预案切换第 13 篇
CPU 飙高 / 整体变慢sys.session + digest TOP SQL第 15 篇
连接打满、服务假死池参数对账 + 治慢 SQL第 14、16 篇
翻页越深越慢游标分页 / 延迟关联第 18 篇
DDL 卡死连坐全站查 MDL 与长事务,换 gh-ost第 19 篇
表大到心慌先过三道门槛再谈拆第 20 篇
数据被误删全量 + binlog 时间点恢复第 21 篇

按生命周期阅读的路径

  • 建表之前:第 17 篇(字段与表设计)——设计期省下的债不用还利息;
  • 查询优化线:第 1 → 2 → 3 → 4 → 5 → 6 篇,慢日志到优化器的完整闭环;
  • 事务并发线:第 7 → 8 → 9 → 10 篇,redo/undo 到 MVCC 到锁到 binlog;
  • 高可用线:第 11 → 12 → 13 篇,搭建、延迟、切换三部曲;
  • 调优工具线:第 14 → 15 → 16 篇,参数、仪表、连接池;
  • 数据治理线:第 18 → 19 → 20 → 21 篇,深分页、大表 DDL、分库分表、备份。

三条心法

  • 先测量,再动手:慢日志、EXPLAIN、sys schema 全都是测量的仪器。跳过测量直接「优化」,大概率是在给想象中的病灶开刀;
  • 索引是 B+ 树,不是许愿池:最左前缀、覆盖索引、自增主键、索引失效——所有规则都能从「树按序组织、页按序 I/O」推导出来。忘掉口诀时,推一遍就回来了;
  • 每个机制都标着价:MVCC 用存储换读并发,next-key lock 用锁范围换隔离,分库分表用 join 和事务换容量,双 1 用延迟换安全。没有免费的隔离级别,只有你愿不愿意付的账单。

上线检查清单

  • 慢日志开启,long_query_time = 1;
  • 核心 SQL EXPLAIN 验收:type 至少 range,高频查询无 Using filesort;
  • 全库 utf8mb4,COLLATE 三层一致;
  • 金额 DECIMAL,主键 bigint 趋势递增;
  • 交易链路双 1(flush_log_at_trx_commit = 1,sync_binlog = 1)未动;
  • Buffer Pool 按内存 50-70% 配置,命中率 99% 以上;
  • 连接池上限与 max_connections 对过账,业务账号与运维账号分离;
  • 从库 super_read_only 开启;
  • 每日全量备份 + binlog 留存 + 异地,恢复演练做过至少一次;
  • 主从延迟有 pt-heartbeat 级别的真实监控,而非只看 Seconds_Behind_Source。

Redis 缓存实战 16 篇、MySQL 实战 22 篇,两座系列地标在咖啡馆后山落成。下个系列候选还剩三块地:消息队列(Redis 系列第 7 篇和本系列第 10 篇都埋过钩子)、分布式 ID(第 20 篇挖了坑)、以及 Elasticsearch 检索实战。选哪块,你说了算——咖啡馆不着急,咖啡豆管够。

咖啡凉了,记得趁热喝。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#MySQL#复盘#性能优化#检查清单#系列收官

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10101 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9872 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9293 阅读 · 21 评论 · 287 赞