🌱

243

一杯咖啡的时间,聊聊技术与成长

连载中 9/22

锁:行锁、间隙锁与一场死锁事故复盘

两个无害的 SELECT 引发死锁?讲清全局锁、表锁、行锁三层体系与 next-key lock 的加锁规则,用一场真实死锁事故演示 show engine innodb status 怎么读。

#MySQL#锁#间隙锁#next-key lock#死锁
2026-05-06 · 3224 阅读 · 0 评论 · 0 赞
连载中 8/22

隔离级别与 MVCC:快照读到底读的是什么

报表里读到不存在的行?对账脚本反复执行结果不一致?从脏读、不可重复读、幻读三个问题讲起,拆解 ReadView 与版本链,讲清 RR 为什么是默认级别。

#MySQL#隔离级别#MVCC#ReadView#幻读
2026-05-05 · 6680 阅读 · 0 评论 · 0 赞
连载中 7/22

事务与崩溃恢复:ACID 背后的 redo 和 undo

扣款成功订单却没生成?ACID 不是背出来的口号:原子性靠 undo log、持久性靠 redo log,搞懂 WAL、循环写与崩溃恢复的完整流程。

#MySQL#事务#redo log#undo log#ACID
2026-05-05 · 7340 阅读 · 0 评论 · 0 赞
连载中 6/22

优化器的选择:统计信息、成本估算与 force index

同样的 SQL 有时走索引有时全表扫?看懂优化器的成本账本:统计信息怎么采样、IO 与 CPU 成本怎么算、什么时候该 ANALYZE TABLE,什么时候才动 force index。

#MySQL#优化器#统计信息#force index#optimizer trace
2026-05-04 · 8459 阅读 · 0 评论 · 0 赞
连载中 5/22

索引失效:这些写法让索引悄悄下岗

索引明明建了,查询还是全表扫?盘点六大失效写法:函数运算、隐式类型转换、左模糊、or 混搭、not in 与隐式字符集,每一条都附补救写法。

#MySQL#索引失效#隐式类型转换#SQL优化#LIKE
2026-05-03 · 8924 阅读 · 0 评论 · 0 赞
连载中 4/22

联合索引:最左前缀、覆盖索引与回表

联合索引的三列顺序为什么是 user_id、status、create_time?用字典查词类比讲透最左前缀,再学会用覆盖索引把回表次数打到零。

#MySQL#联合索引#最左前缀#覆盖索引#回表
2026-05-03 · 2645 阅读 · 0 评论 · 0 赞
连载中 3/22

索引原理:B+ 树为什么长这样

381 万行降到 42 行,凭什么?从 16KB 的页讲起,算出三层 B+ 树为什么能装两千万行,再回答为什么不是 B 树、红黑树和哈希。

#MySQL#索引原理#B+树#聚簇索引#回表
2026-05-02 · 8450 阅读 · 0 评论 · 0 赞
连载中 2/22

EXPLAIN 精读:type 等级、rows 与 Extra 的暗语

EXPLAIN 看了等于白看?把 type 七档、key_len 算法、id 执行顺序和 Extra 全部高频取值逐一精读,学会用 key_len 判断联合索引真正用了几列。

#MySQL#EXPLAIN#执行计划#索引#性能优化
2026-05-01 · 5112 阅读 · 0 评论 · 0 赞
连载中 1/22

一条 SQL 的 8 秒之旅:慢查询日志与 EXPLAIN 入门

订单列表页转了 8 秒才出数据?从慢查询日志定位真凶,用 EXPLAIN 看清执行计划,第一刀给 WHERE 和 ORDER BY 建上联合索引。

#MySQL#慢查询#EXPLAIN#索引#性能优化
2026-05-01 · 2546 阅读 · 0 评论 · 0 赞