文档菜单
文档首页
/
MongoDB 手册
/ / /

优化分片键

优化集合的分片键可以使数据分布更加细致,并能解决现有键由于不足的大块数据而造成的问题。大块数据可能由于基数不足引起。

警告

不要修改任何当前分片键字段的范围或哈希类型。这会导致数据不一致。例如,不要将分片键从{ customer_id: 1 }修改为{ customer_id: "hashed", order_id: 1 }{ customer_id: 1 }{ customer_id: "hashed", order_id: 1 }

注意

从MongoDB 5.0开始,您还可以通过提供新分片键来重新分片集合。要了解是否应该重新分片您的集合或优化您的分片键,请参阅更改分片键。

要优化集合的分片键,请使用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 }
} )

返回

更改分片键