连载中 20/20

收官复盘:一张分库分表作战地图

2026-07-28 · 3249 阅读 · 0 评论 · 0 赞

二十篇的三段旅程

系列收官,照例把旅程收拢。第一段(1-5 篇):决策与设计——从一次改不动的 DDL 认清单表天花板,三招顶格优化守住「能不拆就不拆」的底线,垂直拆理顺业务边界,三种水平刀法各就其位,分片键作为终身决策反复锤炼。第二段(6-12 篇):架构与落地——路由的三种落法,ShardingSphere 把方案变成配置,五步流水线看穿中间件,跨片聚合、分页、JOIN 的归并账本逐页算清,事务用设计锁进单片,主键埋进路由基因。第三段(13-20 篇):演进与治理——翻倍扩容与预分片铺好未来的路,四阶段迁移完成安全交割,在线 DDL、归档瘦身、水位治理支撑长期运转,七个事故把执行漏洞照个通透。

一张作战地图

如果整个系列只能带走一页纸,是这张决策流:第一步——索引、归档、读写分离顶格打完,还撑不住才谈拆(第 2、17 篇);第二步——垂直拆理顺业务边界,再做水平拆(第 3-4 篇);第三步——用查询分布数据选分片键,基因法补多维度查询(第 5 篇);第四步——Hash 加预分片留扩容后路,1024 槽映射从第一天起固定(第 4、13 篇);第五步——绑定表锁 JOIN、广播表放维表、跨片 JOIN 用异构替代(第 10 篇);第六步——事务能单片就单片,跨片走柔性加对账(第 11 篇);第七步——迁移走存量、双写、校验、灰度四阶段,老库下线才算终点(第 14-15 篇);第八步——水位、倾斜、容量进例会,治理无终点(第 18 篇)。

面试题里的老朋友

这套知识也是分库分表面试的全部高频区,串一遍:「什么时候分库分表?」——顶格优化之后仍顶不住写瓶颈或热数据规模,参考线加证据说话;「分片键怎么选?」——高频维度做键、基因法补洞、冗余或异构兜底;「扩容怎么办?」——翻倍扩容的数学性质,或预分片的槽位映射;「迁移怎么保证不丢数据?」——先启双写再搬存量、三道校验、灰度切流、老库保留观察期;「跨片查询怎么办?」——能路由不广播、能异步不实时、能预计算不算细账。答案的骨架都在各自篇章,价值在于把机制讲成取舍。

与整个体系的位置

把这个系列放进更大的地图里看:MySQL 系列打的是「单库内部的仗」——索引、事务、复制、调优;本系列打的是「数据横向扩张的仗」——拆分、路由、迁移、治理;发号、事务这些深水区各有自己的坑,值得更专门的展开——事实上后面已有系列在排队讲它们。缓存、限流熔断这些系列,则是在数据层之上解决流量层的仗。单库优化、横向拆分、流量治理——三条战线合成一套完整的服务端作战体系

写在最后

回头看开篇那次的八小时 DDL,它真正的价值不是逼出了分库分表,而是逼团队第一次认真回答了一串问题:数据到底为谁而存、查询到底长什么样、容量到底会涨到哪。分库分表只是这些问题的答案之一——它逼你完成的业务梳理和数据治理,比分片本身更值钱。系列完结,感谢一路追更,地图交到你手上,路上见。

503

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

#分库分表#收官复盘#作战地图#知识体系#面试高频

评论 (0)

相关推荐

连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 4 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 13 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 8 阅读 · 0 评论 · 0 赞