优化分片键
优化集合的分片键可以实现更细粒度的数据分布,并可解决现有键由于关联基数不足而导致巨型数据块的问题。
警告
请勿修改任何当前分片键字段的范围或哈希类型。这会导致数据不一致。例如,请勿将分片密钥从 { 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 } } )