如何选择分片键?
分库分表面试题发布于
一、选择原则
- 查询频率高:最常用的查询条件字段,如 user_id、order_id。
- 分布均匀:避免数据倾斜,如不要用性别(只有两个值)。
- 业务关联:关联表用相同分片键,减少跨库 join。
- 不可变:分片键值一旦确定不能改。
二、常见分片键
- 用户 ID:用户相关数据,如订单按 user_id 分片。
- 订单 ID:订单数据。
- 时间:日志、流水等时序数据。
三、非分片键查询
- 没有分片键的查询需扫所有分片,效率低。
- 解决方案:
- 建立索引表(非分片键 → 分片键映射)。
- 冗余数据。
- 用 ES 等搜索引擎做非分片键查询。
四、跨库 join
- 尽量避免,业务层组装。
- 用宽表冗余字段。
- 用 ES 查询后回源。