mysql01
MySQL 索引底层(三):写路径、页分裂与索引失效实战
索引不是免费的。这篇从写入侧讲起:顺序追加和随机插入在 B+ 树上的两副面孔、页分裂怎么发生、change buffer 攒的是什么;然后用一组 EXPLAIN 输出对照五个最常见的索引失效场景,每个给反例和改法。
2026-09-07 19:12:392 阅读
共 7 篇文章
索引不是免费的。这篇从写入侧讲起:顺序追加和随机插入在 B+ 树上的两副面孔、页分裂怎么发生、change buffer 攒的是什么;然后用一组 EXPLAIN 输出对照五个最常见的索引失效场景,每个给反例和改法。
InnoDB 的表本身就是一棵 B+ 树——这是理解一切索引行为的总开关。这篇拆开聚簇索引和二级索引的叶子存了什么,回表的成本从哪来,联合索引 (a,b,c) 的列顺序在树里怎么排,以及索引下推省了哪一步。
从一条慢查询出发,把哈希表、有序数组、二叉树、B 树逐个放到索引这个位置上称重,看 B+ 树凭什么胜出;再打开 InnoDB 的 16KB 页算一笔账,解释"2000 万行、3 层树"这个数字的来历。
博客第三轮迭代复盘:把 ?page=N 改成 /page/N 救回 ISR、设计 IP 去重的匿名点赞、CSS counter 实现代码行号、JSON-LD 富摘要,以及双域证书、裸域 301 归一化和加密异地备份的完整收录基建。
分类/标签页集体 500 的 DYNAMIC_SERVER_USAGE 根因与两次误诊、自托管统计从 umami 到 Fathom Lite 的三次换型、tracker.js 不自动上报的三连坑、nginx 缓存旧容器 IP 导致请求错位——十项功能批量改造的完整复盘。
mysql中快速插入百万条数据的方法
mysql中将数据库中的表类型统一换成innodb