数据存储
MySQL 的查询优化、事务与锁、复制与故障切换、备份恢复与大表治理,以及 Elasticsearch 的核心机制。
从哪里开始
按「查询 → 并发 → 可靠性 → 规模」的顺序读:先用 Explain 与 SQL 调优处理慢查询,再用 MVCC 与行锁建立并发模型;然后从 Redo/Undo 走到复制、故障切换与误删恢复;最后看表设计、大表拆分、清理与导入。
文章
01读懂 Explain 执行计划type、key_len 与 Extra 的读法,EXPLAIN ANALYZE 定位瓶颈,四种索引失效实测→02SQL 调优实战优化器为什么放着好索引不用:ORDER BY id LIMIT 陷阱的五种修复、联合索引列顺序、深分页的游标写法与索引的写入代价→03InnoDB MVCC 与隔离级别Read View 可见性判断、快照读与当前读、幻读的条件化回答、RC 与 RR 的锁差异、长事务→04InnoDB 行锁锁的是什么data_locks 实测记录锁、间隙锁与 Next-Key Lock,RR 与 RC 对比,先查后插的死锁,索引如何决定锁范围→05Redo Log 与 Undo Log一条 UPDATE 的写入路径、两阶段提交、崩溃恢复实测与持久性参数的故障模型→06MySQL 复制与延迟一笔事务抵达副本的四个位置,大事务、热点行与链路静默中断,并行回放能解决什么→07MySQL 故障切换与读一致性异步与半同步的确认点、切换流程与缺失核对、重试幂等、写后读策略与旧 source 接回→08MySQL 误删恢复与 PITR全量备份加 binlog 按 GTID 重放,跳过误删补回合法写入,分层证明恢复结果正确→09表设计里的三个细节逻辑删除与唯一约束、IP 地址存储、热点行更新的实测与解法→10单表多大该拆分实测 B+ 树层高与扇出,大表真正的代价,从优化到分库分表的演进路径→11千万级大表怎么清理数据一次性删除的锁与 Binlog 代价、分批删除、DROP PARTITION 与空间回收→12百万行数据导入流式读取、rewriteBatchedStatements 实测、批处理失败语义与可重跑设计→13OLTP 与 OLAP行存与列存的实测对比,以及报表查询什么时候该搬出 MySQL→14Elasticsearch 核心机制倒排索引与分词、分片路由、查询与取回两阶段、近实时刷新实测→15ES 聚合为什么不准terms 聚合的排名误差实测、shard_size 取舍,以及搜索队列打满的排查→