| 高基数 | 候选值足够多,避免少数分片承载大部分数据 |
|---|---|
| 低频率 | 单个取值不集中,热点取值不能作为分片键 |
| 非单调 | 插入不落在同一区间,散列键可缓解单调键的写入集中 |
启用分片与选择分片键
启用分片与选择分片键
sh.enableSharding("app")
sh.shardCollection("app.events", { deviceId: "hashed" })
sh.status()
// 已分片集合可追加后缀字段细化键
sh.shardCollection("app.events", { deviceId: "hashed", ts: 1 })分片键影响路由与均衡:范围查询在散列键上需要访问所有分片;按时间检索多、按租户隔离时,可评估复合分片键。