A partir de MongoDB 7.0, el balanceador puede fusionar automáticamente fragmentos que cumplan con los requisitos. Requisitos de fusionabilidad.
Comportamiento
AutoMerger se ejecuta en segundo plano como parte de las operaciones de balanceo. En la mayoría de los casos, la configuración predeterminada funciona correctamente. Para obtener más información sobre qué configuración personalizar para su implementación, consulte la Política de AutoMerger.
Cuando se ejecuta AutoMerger, comprime todas las secuencias de fragmentos fusionables para cada fragmento de cada colección.
Política de fusión automática
A menos que esté deshabilitado explícitamente, la fusión automática se inicia la primera vez que se habilita el balanceador y se detiene para la siguiente.
autoMergerIntervalSecs después de los drenajes de rutina.
Cuando AutoMerger está habilitado, la fusión automática se produce cada autoMergerIntervalSecs segundos.
Para una colección determinada, AutoMerger garantiza que las fusiones posteriores se retrasen al menos la cantidad especificada autoMergerThrottlingMS por.
Si se establece una ventana de equilibrio, AutoMerger solo se ejecuta durante esa ventana.
Equilibrio de la precedencia de configuraciones
La autofusión se realiza como parte de las operaciones de balanceo. Para decidir si se ejecuta y cuándo, se tienen en cuenta las configuraciones en este orden:
Configuraciónde equilibrio global
Configuración de equilibrio por colección (configurada
configureCollectionBalancingpor)Configuraciónglobal de AutoMerger
Configuración de AutoMerger por colección (configurada
configureCollectionBalancingpor)
Detalles
mergeAllChunksOnShard Busca y fusiona todos los fragmentos fusionables de una colección en el mismo fragmento. Dos o más fragmentos contiguos de la misma colección son fusionables cuando cumplen todas estas condiciones:
Son propiedad del mismo fragmento.
No son fragmentos
jumbogigantes. Los fragmentos no se pueden fusionar porque no pueden participar en migraciones.Su historial se puede purgar de forma segura, sin interrumpir las transacciones ni las lecturas de instantáneas:
La última migración que involucró al fragmento ocurrió hace al menos tantos segundos como el valor
minSnapshotHistoryWindowInSecondsde.La última migración que involucró al fragmento ocurrió hace al menos tantos segundos como el valor
transactionLifetimeLimitSecondsde.
Ejemplo
Este ejemplo asume que el historial está vacío para todos los fragmentos y que todos son no jumbo. Dado que ambas condiciones son verdaderas, todos los intervalos contiguos en el mismo fragmento son fusionables.
Configuración
Estos fragmentos pertenecen a una colección llamada coll con clave de fragmento x. Hay nueve fragmentos en total.
fragmento ID | Min | Max | Partición |
|---|---|---|---|
A |
|
| Fragmento0 |
B |
|
| Fragmento0 |
C |
|
| Fragmento0 |
D |
|
| Fragmento0 |
E |
|
| Fragmento1 |
F |
|
| Fragmento1 |
G |
|
| Fragmento0 |
H |
|
| Fragmento0 |
ME |
|
| Fragmento1 |
Pasos
Resultado
Tras completar estos comandos, se fusionaron los fragmentos contiguos. Ahora hay cuatro fragmentos en total, en lugar de los nueve originales.
fragmento ID | Min | Max | Partición |
|---|---|---|---|
ABCD |
|
| Fragmento0 |
EF |
|
| Fragmento1 |
GH |
|
| Fragmento0 |
ME |
|
| Fragmento1 |