如何选择分片键?

分库分表面试题发布于

一、选择原则

  1. 查询频率高:最常用的查询条件字段,如 user_id、order_id。
  2. 分布均匀:避免数据倾斜,如不要用性别(只有两个值)。
  3. 业务关联:关联表用相同分片键,减少跨库 join。
  4. 不可变:分片键值一旦确定不能改。

二、常见分片键

  • 用户 ID:用户相关数据,如订单按 user_id 分片。
  • 订单 ID:订单数据。
  • 时间:日志、流水等时序数据。

三、非分片键查询

  • 没有分片键的查询需扫所有分片,效率低。
  • 解决方案:
  • 建立索引表(非分片键 → 分片键映射)。
  • 冗余数据。
  • 用 ES 等搜索引擎做非分片键查询。

四、跨库 join

  • 尽量避免,业务层组装。
  • 用宽表冗余字段。
  • 用 ES 查询后回源。