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