优化分片键
细化集合的分片分片键可实现更细粒度的数据分布,并可解决现有键因关联 关联基数 不足而导致 个 巨型 数据段的情况。
警告
请勿修改任何当前分片键字段的范围或哈希类型。它会导致数据不一致。 例如,请勿将分片键从 { customer_id: 1 }
修改为{ customer_id:
"hashed", order_id: 1 }
。
若要优化集合的分片键,请使用 refineCollectionShardKey
命令。refineCollectionShardKey
会向现有键添加一个或多个后缀字段以创建新的分片键。
例如,您可能在 test
数据库中有一个现有的 orders
集合,其分片键为 { customer_id: 1 }
。您可以使用 refineCollectionShardKey
命令将分片键更改为新的分片键 { customer_id: 1, order_id: 1 }
:
db.adminCommand( { refineCollectionShardKey: "test.orders", key: { customer_id: 1, order_id: 1 } } )