外观
一句话答案
单库用自增 ID 简单高效,分布式场景用雪花算法(有序高性能)或号段模式(高可用),UUID 无序不利于索引。
核心要点
| 方案 | 优点 | 缺点 |
|---|---|---|
| UUID | 简单无依赖 | 无序/字符串长/不利索引 |
| 雪花算法 | 有序/高性能 | 时钟回拨问题 |
| 号段模式 | 高可用/可预分配 | 依赖DB |
| Redis自增 | 简单有序 | 依赖Redis |
追问与易错
追问方向:
- 雪花算法时钟回拨怎么处理?
- UUID 做主键有什么问题?
- 号段模式怎么实现?
易错点:
- ❌ 自增 ID 没有问题——暴露业务量/分库不唯一
- ❌ 雪花算法不会重复——时钟回拨时可能重复
💡 记忆锚点
自增 ID 像排队取号——简单有序但只能一个窗口发号(单库)。分布式场景需要多窗口同时发号不重复:雪花算法是"时间戳+机器号+序列号"组合出唯一编号(有序高性能,但怕时钟回拨),号段模式是批量预领一段号码回去慢慢发(高可用),UUID 是随机生成但无序导致索引分裂。