A partir de MongoDB 7.0, el balanceador puede fusionar automáticamente fragmentos que cumplan con la requisitos de fusión.
Comportamiento
El AutoMerger se ejecuta en segundo plano como parte de las operaciones de balanceo. Para la mayoría de los casos de uso, la configuración por defecto funciona bien. Para obtener detalles sobre qué configuraciones personalizar para su implementación, consulte Política de combinación automática.
Cuando AutoMerger se ejecuta, combina todas las secuencias de fragmentos fusionables para cada partición de cada colección.
AutoMerger Policy
A menos que se desactive explícitamente, el AutoMerger se inicia la primera vez que se activa el balanceador y se pausa hasta la próxima vez.
autoMergerIntervalSecs después de los drenajes rutinarios.
Cuando AutoMerger está habilitado, la fusión automática se realiza cada autoMergerIntervalSecs segundos.
Para una colección determinada, AutoMerger garantiza que las fusiones posteriores se retrasen al menos la cantidad especificada por autoMergerThrottlingMS.
Si se establece una ventana de equilibrio, AutoMerger solo se ejecuta durante la ventana.
Precedencia de la configuración de balanceo
La fusión automática ocurre como parte de las operaciones de balanceo. Para decidir si y cuándo ejecutar la función de auto-fusión, se tienen en cuenta los ajustes en este orden:
Configuraciones de balanceo por colección (configuradas por
configureCollectionBalancing)Configuración global de AutoMerger
Configuración de fusión automática por colección (configurada por
configureCollectionBalancing)
Detalles
mergeAllChunksOnShard encuentra y fusiona todos los fragmentos que se pueden fusionar para una colección en la misma partición. Dos o más fragmentos contiguos en la misma colección son fusionables cuando cumplen todas estas condiciones:
Son propiedad de la misma partición.
No son fragmentos jumbo.
jumbofragmentos no se pueden fusionar porque no pueden participar en las migraciones.Su historial se puede purgar de manera segura, sin interrumpir las transacciones y las lecturas de snapshot:
La última migración que involucró el fragmento ocurrió hace al menos tantos segundos como el valor de
minSnapshotHistoryWindowInSeconds.La última migración que involucró el fragmento ocurrió hace al menos tantos segundos como el valor de
transactionLifetimeLimitSeconds.
Ejemplo
Este ejemplo asume que el historial está vacío para todos los fragmentos y que todos los fragmentos no son jumbo. Ya que ambas condiciones son verdaderas, todos los intervalos contiguos en la misma partición se pueden fusionar.
Configuración
Estos fragmentos pertenecen a una colección llamada coll con clave de partición x. Hay nueve fragmentos en total.
fragmento ID | Min | máximo | Partición |
|---|---|---|---|
A |
|
| Partición0 |
B |
|
| Partición0 |
C |
|
| Partición0 |
D |
|
| Partición0 |
E |
|
| Shard1 |
F |
|
| Shard1 |
G |
|
| Partición0 |
H |
|
| Partición0 |
Yo |
|
| Shard1 |
Pasos
Resultado
Después de que estos comandos se hayan completado, los fragmentos contiguos se han combinado. Hay cuatro fragmentos en total en lugar de los nueve originales.
fragmento ID | Min | máximo | Partición |
|---|---|---|---|
A-B-C-D |
|
| Partición0 |
E-F |
|
| Shard1 |
G-H |
|
| Partición0 |
Yo |
|
| Shard1 |