第 1 篇一条 SQL 在 MySQL 中经历了什么?从连接到提交的完整链路2025/11/25以一条查询和更新语句为线索,拆解连接器、解析器、优化器、执行器、Buffer Pool、Redo Log、Undo Log 与 Binlog。阅读 一条 SQL 在 MySQL 中经历了什么?从连接到提交的完整链路
第 2 篇InnoDB 的索引为什么选择 B+ 树?从磁盘页到范围查询2025/11/28从局部性、扇出、树高、聚簇索引与页分裂解释 B+ 树的工程优势,并给出可复现实验。阅读 InnoDB 的索引为什么选择 B+ 树?从磁盘页到范围查询
第 3 篇联合索引不只是最左前缀:索引下推、回表与覆盖索引2026/01/16通过执行计划和可复现实验,说明联合索引列顺序、范围条件、ICP、覆盖索引和排序之间的真实关系。阅读 联合索引不只是最左前缀:索引下推、回表与覆盖索引
第 4 篇MySQL 在什么情况下会选错索引?统计信息、成本模型与数据倾斜2026/01/20解释优化器选择错误访问路径的根因,演示基数估算、数据倾斜、直方图与安全诊断方法。阅读 MySQL 在什么情况下会选错索引?统计信息、成本模型与数据倾斜
第 5 篇MySQL MVCC 是如何实现的?Undo Log、Read View 与隔离级别2026/03/10从隐藏字段和版本链出发,推导一致性读规则,并用双会话实验对比 RC 与 RR。阅读 MySQL MVCC 是如何实现的?Undo Log、Read View 与隔离级别
第 6 篇间隙锁为什么会导致线上死锁?从 Next-Key Lock 到排查实战2026/03/13解释记录锁、间隙锁和 Next-Key Lock 的加锁范围,复现典型死锁,并给出生产治理方法。阅读 间隙锁为什么会导致线上死锁?从 Next-Key Lock 到排查实战
第 7 篇如何系统排查 MySQL 慢查询?从监控到执行计划的证据链2026/05/01给出一套可落地的慢 SQL 排查流程,覆盖采集、归因、EXPLAIN ANALYZE、锁等待、I/O 与上线验证。阅读 如何系统排查 MySQL 慢查询?从监控到执行计划的证据链
第 8 篇深分页为什么慢?从 OFFSET 扫描到游标分页的完整优化2026/05/05分析 LIMIT 大偏移的执行成本,对比延迟关联、Seek Method、复合游标与跳页方案。阅读 深分页为什么慢?从 OFFSET 扫描到游标分页的完整优化
第 9 篇MyBatis 一级缓存为什么可能读到旧数据?从 SqlSession 到缓存失效2026/06/16从 PerpetualCache、CacheKey 与 SqlSession 生命周期出发,复现一级缓存命中和跨会话陈旧读取,说明清理规则与工程治理方案。阅读 MyBatis 一级缓存为什么可能读到旧数据?从 SqlSession 到缓存失效
第 10 篇Hibernate N+1 问题与抓取策略:从懒加载到实体图2026/06/20复现关联查询中的 N+1,比较 JOIN FETCH、EntityGraph、批量抓取和 DTO 投影,并讨论分页、笛卡尔积与多集合抓取边界。阅读 Hibernate N+1 问题与抓取策略:从懒加载到实体图
第 11 篇分库分表后,分页、排序和唯一 ID 应该如何设计?2026/07/07从路由键和全局顺序出发,分析跨分片分页、Top-K 归并、游标翻页与分布式 ID,并给出可落地的查询架构。阅读 分库分表后,分页、排序和唯一 ID 应该如何设计?
第 12 篇数据库与消息队列如何保证最终一致性?本地消息表、事务消息与 Outbox2026/07/10从双写失败窗口出发,对比本地消息表、消息队列事务消息与 Transactional Outbox,并给出投递、幂等、顺序和对账的工程实现。阅读 数据库与消息队列如何保证最终一致性?本地消息表、事务消息与 Outbox