Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

A fusão automática

Nesta página

  • Comportamento
  • Detalhes
  • Exemplo

A partir do MongoDB 7.0, o balanceador pode mesclar automaticamente os blocos que atendem aosrequisitos de mesclabilidadedo .

O AutoMerger é executado em segundo plano como parte das operações de balanceamento. Na maioria dos casos de uso, as configurações padrão funcionam bem. Para obter detalhes sobre quais configurações devem ser personalizadas na sua implantação, consulte a Política de AutoMerger.

Quando o AutoMerger é executado, ele une todas as sequências de partes mescláveis para cada shard de cada collection.

A menos que explicitamente desabilitado, o AutoMerger inicia a primeira vez que o balanceador é habilitado e pausa para o próximo autoMergerIntervalSecs após a drenagem da rotina.

Quando o AutoMerger está ativado, a mesclagem automática acontece a cada autoMergerIntervalSecs segundos.

Para uma determinada coleção, o AutoMerger garante que as mesclagens subsequentes atrasem pelo menos o valor especificado porautoMergerThrottlingMS.

Se uma janela de balanceamento for definida, o AutoMerger só será executado durante a janela.

A mesclagem automática acontece como parte das operações de balanceamento. Para decidir se e quando executar a fusão automática, as configurações são consideradas nesta ordem:

  1. Configurações de balanceamento global

  2. Configurações de balanceamento por coleção (configuradas por configureCollectionBalancing)

  3. Configurações globais do AutoMerger

  4. Configurações da fusão automática por coleção (configuradas por configureCollectionBalancing)

mergeAllChunksOnShard encontra e mescla todas as partes mescláveis para uma collection no mesmo shard. Dois ou mais parte contíguos na mesma collection são mescláveis quando atendem a todas estas condições:

  • Eles pertencem ao mesmo fragmento.

  • Eles não são pedaços gigantescos. As partes jumbo não podem ser mescladas porque não podem participar de migrações.

  • O histórico deles pode ser limpo com segurança, sem interromper transações e leituras de snapshots:

Este exemplo pressupõe que o histórico esteja vazio para todos os partes e que todos os partes não são jumbo. Como ambas as condições são verdadeiras, todos os intervalos contíguos no mesmo fragmento são mescláveis.

Esses chunks pertencem a uma coleção chamada coll com chave de fragmento x. São nove pedaços no total.

ID do bloco
Min
Máx
Fragmento

uma

x: 0

x: 10

Fragmento0

B

x: 10

x: 20

Fragmento0

C

x: 20

x: 30

Fragmento0

D

x: 30

x: 40

Fragmento0

E

x: 40

x: 50

Shard1

F

x: 50

x: 60

Shard1

G

x: 60

x: 70

Fragmento0

H

x: 70

x: 80

Fragmento0

i

x: 80

x: 90

Shard1

1
db.adminCommand( { mergeAllChunksOnShard: "db.coll", shard: "Shard0" } )

Este comando mescla as sequências contíguas de blocos:

  • A-B-C-D

  • G-H

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

Esse comando mescla as sequências contíguas dos blocos E-F.

Depois que esses comandos forem concluídos, os blocos contíguos serão mesclados. Há quatro partes no total em vez das nove originais.

ID do bloco
Min
Máx
Fragmento

A-B-C-D

x: 0

x: 40

Fragmento0

E-F

x: 40

x: 60

Shard1

G-H

x: 60

x: 80

Fragmento0

i

x: 80

x: 90

Shard1

Voltar

Migrar intervalos