Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

在分片集群中创建范围

在此页面上

  • 了解详情

在大多数情况下,分片集群会自动创建/分割和分发范围,无需用户干预。但是,在有限的情况下,MongoDB 无法创建足够多的范围或以足够快的速度分发数据,从而无法支持所需的吞吐量。

注意

从 MongoDB 6开始。 0 ,您不能通过创建空范围来预分割范围并让负载均衡器自动分配范围。相反,请执行以下任一操作:

例如,您想要将大量数据摄入到不平衡的集群中,或者数据的摄入会导致数据不平衡,例如使用单调增加或减少的分片键。在此类情况下,对空分片集合的范围预分片有助于提高吞吐量。

或者,通过在对空集合或不存在的集合进行分片 之前 定义 区域和区域范围 ,分片集合操作会为定义的区域范围创建范围以及任何其他范围以覆盖分片键值的整个范围,并执行基于区域范围的初始范围分布。有关详细信息,请参阅 空集合。

警告

仅对空集合的范围进行预分片。手动分割已填充集合的范围可能会导致不可预测的范围和大小,以及低效或无效的平衡行为。

要手动分割空范围,可以运行 split命令:

例子

要使用email字段作为分片myapp.users集合中的文档创建范围,请在 mongosh中使用以下操作:

for ( var x=97; x<97+26; x++ ){
for ( var y=97; y<97+26; y+=6 ) {
var prefix = String.fromCharCode(x) + String.fromCharCode(y);
db.adminCommand( { split: "myapp.users", middle: { email : prefix } } );
}
}

假设集合大小为100万份文档。

← 使用数据块进行数据分区

在此页面上