优化分片键
优化集合的分片键可以使数据分布更加细致,并能解决现有键由于不足的大块数据而造成的问题。大块数据可能由于基数不足引起。
警告
不要修改任何当前分片键字段的范围或哈希类型。这会导致数据不一致。例如,不要将分片键从{ customer_id: 1 }修改为{ customer_id: "hashed", order_id: 1 }。{ customer_id: 1 }到{ customer_id: "hashed", order_id: 1 }。
要优化集合的分片键,请使用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 } } )