A fusão automática
Nesta página
A partir do MongoDB 7.0, o balanceador pode mesclar automaticamente os blocos que atendem aosrequisitos de mesclabilidadedo .
Comportamento
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.
Política do AutoMerger
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.
Se uma janela de balanceamento for definida, o AutoMerger só será executado durante a janela.
Precedência de configurações de balanceamento
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:
Configurações de balanceamento por coleção (configuradas por
configureCollectionBalancing
)Configurações globais do AutoMerger
Configurações da fusão automática por coleção (configuradas por
configureCollectionBalancing
)
Detalhes
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:
A última migração envolvendo a parte aconteceu há pelo menos tantos segundos quanto o valor de
minSnapshotHistoryWindowInSeconds
.A última migração envolvendo a parte aconteceu há pelo menos tantos segundos quanto o valor de
transactionLifetimeLimitSeconds
.
Exemplo
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.
Configurar
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 |
Passos
Resultado
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 |