外观
一句话答案
数据量大时水平拆分(按行 hash 分到多库多表),中间件选 ShardingSphere,核心问题:跨库 JOIN/分布式事务/全局排序。
核心要点
拆分策略:
| 策略 | 说明 |
|---|---|
| 水平分表 | 按行拆分到多张表(如按user_id hash) |
| 水平分库 | 拆分到多个库实例 |
| 垂直分表 | 大字段拆到副表 |
| 垂直分库 | 按业务拆库(订单库/用户库) |
问题: 跨库JOIN / 分布式事务 / 全局排序分页 / 数据迁移
追问与易错
追问方向:
- 分库后跨库 JOIN 怎么办?
- 全局排序分页怎么实现?
- 分库分表后能回退吗?
易错点:
- ❌ 单表几百万就要分——取决于查询和性能
- ❌ 一开始就分库分表——过早优化
💡 记忆锚点
分库分表像图书馆扩建:垂直拆分是按学科分馆(用户库、订单库),水平拆分是同一学科的书按编号分柜(hash 分到多张表)。代价是跨馆借书麻烦(跨库 JOIN)、总馆统计困难(全局排序分页)、搬迁费力(数据迁移)。没到千万级别不要轻易动手。