configureCollectionBalancing
定义
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { configureCollectionBalancing: "<db>.<collection>", chunkSize: <num>, defragmentCollection: <bool> } )
命令字段
configureCollectionBalancing
有以下字段:
字段 | 类型 | 说明 |
---|---|---|
| 字符串 | 必需:要配置的数据库和分片collection的名称。 |
| 整型 | 可选:设置collection的数据块大小(以 MiB 为单位)。建议的大小为 256、512 或更大。 |
| 布尔 | 可选:使负载均衡器对collection进行碎片整理。 |
有关更多信息,请参阅使用数据块进行数据分区。
行为
chunkSize
未指定集合
如果您没有为collection指定chunkSize
,也没有设置自定义大小,则使用全局默认chunkSize
进行负载均衡。
指定 chunkSize: 0
如果使用 configureCollectionBalancing
和 chunkSize: 0
,则会重置每个集合的 chunkSize
,并使用全局默认chunkSize
进行均衡操作。
有关配置默认chunkSize
的更多信息,请参阅修改分片集群中的范围大小。
示例
配置数据块大小
要更改分片collection的数据块大小,请使用chunkSize
选项:
db.adminCommand( { configureCollectionBalancing: "test.students", chunkSize: 256 } )
使用此命令可更改给定collection的数据块大小。
警告
默认,如果数据段中的数据块数据块大于配置的数据数据块大小除以平均文档大小所得结果的2倍,则MongoDB无法移动该数据段。
要查找平均文档大小,请参阅db.collection.stats()
方法输出中的avgObjSize
字段。
有关详细信息,请参阅范围大小。
对collection进行碎片整理
警告
我们不建议使用defragmentCollection
对 MongoDB 6.0.0 到 6.0.3 以及 MongoDB 6.1.0 的collection进行碎片整理至 6.1.1、 因为这些版本上的碎片整理过程可能会导致数据库和集合长时间不可用。
要指示负载均衡器对分片collection进行碎片整理,请使用defragmentCollection
选项:
db.adminCommand( { configureCollectionBalancing: "test.students", defragmentCollection: true } )
使用此命令可让负载均衡器对分片collection进行碎片整理。要监控数据段碎片整理进程,请使用balancerCollectionStatus
命令。
重新配置collection并进行碎片整理
要在更新数据段大小时对分片集合进行碎片整理,请同时使用defragmentCollection
选项和chunkSize
选项:
db.adminCommand( { configureCollectionBalancing: "test.students", chunkSize: 512, defragmentCollection: true } )