Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

configureCollectionBalancing

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 行为
  • 示例
configureCollectionBalancing

5.3 版本中的新增功能

为分片collection配置负载均衡器设置,例如为collection设置数据块大小和进行碎片整理。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

该命令具有以下语法:

db.adminCommand(
{
configureCollectionBalancing: "<db>.<collection>",
chunkSize: <num>,
defragmentCollection: <bool>
enableAutoMerger: <bool>
}
)

configureCollectionBalancing 有以下字段:

字段
类型
必要性
说明

configureCollectionBalancing

字符串

必需

要配置的数据库和分片collection的名称。

chunkSize

整型

Optional

设置集合的数据段大小(以数据块为单位)。建议的大小为256 、512 或更大。有关默认行为的详细信息,请参阅未指定 chunkSize 时的默认行为。

defragmentCollection

布尔

Optional

导致负载均衡器对集合进行碎片整理。 默认为false

enableAutoMerger

布尔

Optional

AutoMerger是否考虑此collection。默认为true

有关更多信息,请参阅使用数据块进行数据分区。

要配置数据块碎片整理限制时间参数,请参阅chunkDefragmentationThrottlingMS

要了解如何对分片集合进行碎片整理,请参阅对分片集合进行碎片整理。

如果您没有为collection指定chunkSize ,也没有设置自定义大小,则使用全局默认chunkSize进行负载均衡。

如果使用 configureCollectionBalancingchunkSize: 0,则会重置每个集合的 chunkSize,并使用全局默认chunkSize 进行均衡操作。

有关配置默认chunkSize的更多信息,请参阅修改分片集群中的范围大小。

如果您没有为collection指定enableAutoMerger ,并且以前没有设置自定义自动合并行为,则defaults为true ,并且 AutoMerger 将予以考虑。

要更改分片collection的数据块大小,请使用chunkSize选项:

db.adminCommand( {
configureCollectionBalancing: "test.students",
chunkSize: 256
} )

使用此命令可更改给定collection的数据块大小。

警告

默认,如果数据段中的数据块数据块大于配置的数据数据块大小除以平均文档大小所得结果的2倍,则MongoDB无法移动该数据段。

要查找平均文档大小,请参阅db.collection.stats()方法输出中的avgObjSize字段。

有关详细信息,请参阅范围大小。

警告

我们不建议使用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进行碎片整理的更多信息,请参阅对分片collection进行碎片整理。

要在更新数据段大小时对分片集合进行碎片整理,请同时使用defragmentCollection选项和chunkSize选项:

db.adminCommand( {
configureCollectionBalancing: "test.students",
chunkSize: 512,
defragmentCollection: true
} )

要显式禁用collection上的 AutoMerger,请将enableAutoMerger选项设置为false

db.adminCommand( {
configureCollectionBalancing: "test.students",
enableAutoMerger: false
} )

后退

commitReshardCollection