Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

AutoMerger

在此页面上

  • 行为
  • 详情
  • 例子

从 MongoDB 7.0开始,负载均衡器可以自动合并满足可合并性要求的数据段。

作为平衡操作的一部分,AutoMerger 在后台运行。对于大多数用例,默认设置表现良好。有关为部署自定义哪些设置的详细信息,请参阅 AutoMerger 政策。

当 AutoMerger 运行时,它会将每个集合的每个分片的所有可合并数据块序列压缩在一起。

除非明确禁用,否则 AutoMerger 会在首次启用负载负载均衡器时启动,并在例程清空后暂停以等待下一个 autoMergerIntervalSecs

启用 AutoMerger 后,每autoMergerIntervalSecs秒进行一次自动合并。

对于给定的集合,AutoMerger 保证后续合并至少延迟 autoMergerThrottlingMS 指定的时间。

如果设置了均衡窗口,AutoMerger 仅在该窗口期间运行。

自动合并是均衡操作的一部分。 为了决定是否以及何时执行自动合并,按以下顺序考虑设置:

  1. 全局负载均衡设置

  2. 每个集合的平衡设置(通过 configureCollectionBalancing 配置)

  3. 全局 AutoMerger 设置

  4. 每个集合的 AutoMerger 设置(通过 configureCollectionBalancing 配置)

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

  • 它们属于同一个分片。

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

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

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

这些数据块属于一个名为 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

后退

迁移范围

在此页面上