Docs 菜单

Docs 主页开发应用程序MongoDB Manual

configureCollectionBalancing

在此页面上

  • 定义
  • 语法
  • 行为
  • 举例
configureCollectionBalancing

5.3 版本中的新增功能

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

该命令具有以下语法:

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

configureCollectionBalancing 有以下字段:

字段
类型
必要性
说明
configureCollectionBalancing
字符串
必需
要配置的数据库和分片collection的名称。
chunkSize
整型
Optional
设置集合的数据段大小(以 MiB 为单位)。建议的大小为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的数据块大小。

警告

默认情况下,如果数据块中的文档数量大于配置的数据块大小除以平均文档大小所得结果的 1.3 倍,则 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