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

范围分片

基于范围的分片涉及将数据划分为由分片键值确定的连续范围。在此模型中,具有“接近”的分片键值的文档很可能位于同一数据块分片中。这允许进行高效的查询,其中读取目标连续范围内的文档。然而,如果分片键选择不当,读取和写入性能可能会降低。请参阅分片键选择.

Diagram of the shard key value space segmented into smaller ranges or chunks.

如果没有配置其他选项(如哈希分片区域所需选项),则基于范围的分片是默认的分片方法。

范围分片在分片键具有以下特性时最为高效

以下图像展示了使用字段X作为分片键的分片集群。如果X的值具有大范围、低频率,并且以非单调的速度变化,插入的分布可能类似于以下

Diagram of good shard key distribution
点击放大

使用sh.shardCollection()方法,指定集合的完整命名空间和要作为分片键使用的索引组合索引

sh.shardCollection( "database.collection", { <shard key> } )

重要

  • 从MongoDB 5.0开始,您可以通过更改集合的分片键来重新分片集合

  • 您可以通过向现有分片键添加后缀字段或多个字段来细化分片键

如果您对已填充的集合进行分片,最初只会创建一个分片。然后平衡器根据配置的分区大小,如果需要,将范围从该分片迁移。

如果您对空集合进行分片

  • 未指定 区域和区域范围 对于空集合或不存在集合

    • 分片操作创建一个空分片来覆盖整个分片键值范围。

    • 在创建初始分片后,平衡器将根据区域范围迁移初始分片,并管理未来的分片分布。

  • 指定了区域和区域范围用于空集合或不存在集合

    • 分片操作为定义的区域范围创建空分片,以及任何其他分片以覆盖整个分片键值范围,并基于区域范围执行初始分片分布。这种初始创建和分片分布允许更快地设置区域分片。

    • 在初始分布后,平衡器管理未来的分片分布。

提示

另请参阅

要了解如何部署分片集群并实现范围分片,请参阅 部署自托管分片集群。

返回

哈希分片