在分片集群中创建数据块
在大多数情况下, 分分片集群会自动创建/分割和分发数据段,无需用户干预。 但是,在有限的情况下, MongoDB无法创建足够多的数据段或以足够快的速度分发数据,从而无法支持所需的吞吐量。
示例,如果您想将大量数据摄入到不平衡的集群中,或者数据的摄入会导致数据不平衡,例如分片键分片增加或减少。 在这些情况下,预分割空分分片的集合的数据段有助于提高吞吐量。
或者,通过在对分片或不存在的集合进行分片 之前 定义 区域和区域范围 ,分片集合操作会为定义的区域范围创建数据段以及任何其他数据段以覆盖分片分片键的整个范围,并执行基于区域范围的初始数据数据块分布。有关详细信息,请参阅空集合。
警告
仅对空集合预分割数据段。 为已填充的集合手动拆分数据段可能会导致不可预测的数据段范围和大小以及低效或无效的平衡行为。
要手动分割空数据段,可以运行 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万份文档。
有关分片命令创建和分布式的初始数据段的信息,请参阅空集合。
有关手动迁移数据段的信息,请参阅迁移分片集群中的数据段。