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

mergeAllChunksOnShard

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 例子
mergeAllChunksOnShard

mergeAllChunksOnShard 查找并合并分片在给定分片中拥有的所有个可合并数据段

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

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

重要

无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。

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

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

该命令具有以下语法:

db.adminCommand(
{
mergeAllChunksOnShard: <name of the collection>,
shard: <name of the shard>,
maxNumberOfChunksToMerge: <maximum number of chunks to merge> /* optional */
}
)

该命令接受以下字段:

字段
类型
必要性
说明
mergeAllChunksOnShard
字符串
必需
集合的名称。
shard
字符串
必需
分片的名称。
maxNumberOfChunksToMerge
整型
Optional
要合并的最大数据块数。

mergeAllChunksOnShard 查找并合并同一分片上collection的所有可合并数据块。同一collection中的两个或多个连续数据块在满足以下所有条件时是可合并的:

  • 它们属于同一个分片。

  • 它们不是 jumbo 块。jumbo 块不可合并,因为它们无法参与迁移。

  • 可以安全地清除它们的历史记录,而不会中断事务和快照读取:

此示例假设所有数据段的历史记录均为空,并且所有数据段都是非巨型数据段。 由于这两个条件都为 true,因此同一分片上的所有连续分片都是可合并的。

这些数据块属于一个名为 coll 的集合,其分片键为 x。总共有九个数据块。

数据段ID
Min
Max
分片
A
x: 0
x: 10
分片0
B
x: 10
x: 20
分片0
C
x: 20
x: 30
分片0
D
x: 30
x: 40
分片0
E
x: 40
x: 50
分片 1
F
x: 50
x: 60
分片 1
G
x: 60
x: 70
分片0
h
x: 70
x: 80
分片0
I
x: 80
x: 90
分片 1
1
db.adminCommand( { mergeAllChunksOnShard: "db.coll", shard: "Shard0" } )

此命令会合并连续的数据段序列:

  • A-B-C-D

  • G-H

2
db.adminCommand( { mergeAllChunksOnShard: "db.coll", shard: "Shard1" } )

此命令会合并连续的数据段 EF 序列。

这些命令完成后,连续的块将被合并。总共有四个块,而不是原来的九个。

数据段ID
Min
Max
分片
A-B-C-D
x: 0
x: 40
分片0
E-F
x: 40
x: 60
分片 1
G-H
x: 60
x: 80
分片0
I
x: 80
x: 90
分片 1

后退

列出分片