开始碎片化分片集合
要开始碎片化分片集合,请使用configureCollectionBalancing
命令,并将 defragmentCollection
选项设置为 true
。
关于此任务
碎片化是指将分片集合的数据分割成过多的小块。这可能会增加在该集合上运行CRUD操作的运行时间。碎片整理通过合并较小的块到较大的块来减少块的数量,从而降低CRUD操作的时间。
如果CRUD操作时间可以接受,您不需要对集合进行碎片整理。
以下表格总结了不同MongoDB版本的碎片整理信息。
MongoDB版本 | 描述 |
---|---|
MongoDB 7.0及以后 | 块会自动合并。在MongoDB 7.0中对集合进行碎片整理的性能提升低于MongoDB 6.0。通常,从MongoDB 7.0开始,您不需要对集合进行碎片整理。 |
MongoDB 6.0及之前 | 只有当在平衡器迁移块或节点启动时遇到CRUD操作延迟时,才需要对集合进行碎片整理。 从MongoDB 6.0开始,高写入流量不应导致碎片化。块迁移导致碎片化。 |
MongoDB 6.0之前 | 只有当在元数据更新期间遇到CRUD操作时间延长时,才需要对集合进行碎片整理。对于MongoDB版本低于6.0的版本,当集合由于许多插入或更新操作而显著增长时,分片集合会变得碎片化。 |
本任务中的过程使用名为ordersShardedCollection
的示例分片集合和名为test
的数据库。
您可以在过程中使用自己的分片集合和数据库。
开始之前
连接到mongos
。
程序
1
下一步
您可以通过 监控碎片整理分片集合 了解更多细节来监控集合的碎片整理进度。
了解更多
打印分片状态,参见
db.printShardingStatus()
检索分片状态详细信息,参见
sh.status()
查看分片状态集合字段,参见 分片集合
查看活动 mongos 实例,参见 活动
mongos
实例使用 MongoDB Atlas 监控分片,参见审查分片集群