文档菜单
文档首页
/
MongoDB 手册
/ / /

mergeAllChunksOnShard

本页

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

mergeAllChunksOnShard 查找并合并给定集合中碎片拥有的所有可合并碎片

此命令可在以下环境中部署

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

重要

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

  • MongoDB Enterprise:基于订阅的自托管MongoDB版本

  • MongoDB 社区版:MongoDB 的开源、免费使用和自管理版本

该命令具有以下语法

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

该命令接受以下字段

字段
类型
必要性
描述
mergeAllChunksOnShard
string
Required
集合名称。
shard
string
Required
分片名称。
maxNumberOfChunksToMerge
integer
Optional
最大合并块数。

mergeAllChunksOnShard 查找并合并同一分片上集合的所有可合并块。当两个或更多连续块在同一集合中满足以下所有条件时,它们是 可合并的

  • 它们属于同一分片。

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

  • 它们的历史可以被安全地清除,而不会破坏事务和快照读取。

此示例假设所有块的历史记录为空,并且所有块都是非大块。由于这两个条件都成立,同一分片上所有连续的时间段都是 可合并的。

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

块 ID
最小值
最大值
分片
A
x: 0
x: 10
Shard0
B
x: 10
x: 20
Shard0
C
x: 20
x: 30
Shard0
D
x: 30
x: 40
Shard0
E
x: 40
x: 50
Shard1
F
x: 50
x: 60
Shard1
G
x: 60
x: 70
Shard0
H
x: 70
x: 80
Shard0
I
x: 80
x: 90
Shard1
1
db.adminCommand( { mergeAllChunksOnShard: "db.coll", shard: "Shard0" } )

此命令合并连续的块序列

  • A-B-C-D

  • G-H

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

此命令合并连续的块序列E-F。

执行完这些命令后,连续的块已合并。现在总共有四个块,而不是原来的九个。

块 ID
最小值
最大值
分片
A-B-C-D
x: 0
x: 40
Shard0
E-F
x: 40
x: 60
Shard1
G-H
x: 60
x: 80
Shard0
I
x: 80
x: 90
Shard1

返回

listShards