在大多数情况下,分片群集将自动创建/拆分和分发块,而无需用户干预。但是,在少数情况下,MongoDB无法创建足够大的块或足够快地分发数据以支持所需的吞吐量。
例如,如果要将大量数据摄取到不平衡的群集中,或者要在其中摄取数据会导致数据不平衡的情况(例如,单调增加或减少分片键)。在这些情况下,预拆分空分片集合的块可以帮助提高吞吐量。
或者,从MongoDB 4.0.3开始,通过在分片空集合或不存在的集合之前定义区域和区域范围 ,分片集合操作将为定义的区域范围以及所有其他覆盖整个范围的块创建块。分片键值,并根据区域范围执行初始块分配。更多信息,请参见 空集合。
警告
仅预分割的块用于空集合。手动拆分已填充集合的块可能导致不可预测的块范围和大小以及无效或无效的平衡行为。
要手动拆分空块,可以运行以下split
命令: