sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Está bien consultar un MongoDB varias veces por solicitud?

Para responder a la Q sobre $in....

Hice algunas pruebas de rendimiento con el siguiente escenario:

~24 millones de documentos en una colección
Busque 1 millón de esos documentos en función de una clave (indexada)
Usando el controlador CSharp de .NET

Resultados:
Consultar 1 a la vez, subproceso único:109s
Consultar 1 a la vez, subprocesos múltiples:48s
Consultar 100K a la vez usando $in, subproceso único =20s
Consultar 100 000 a la vez con $in, varios subprocesos =9 s

Por lo tanto, un rendimiento notablemente mejor con un $in grande (restringido al tamaño máximo de consulta).

Actualizar: Siguiendo los comentarios a continuación sobre cómo funciona $in con diferentes tamaños de fragmentos (consultas de subprocesos múltiples):

Consultar 10 a la vez (100000 lotes) =8.8s
Consultar 100 a la vez (10000 lotes) =4.32s
Consultar 1000 a la vez (1000 lotes) =4.31s
Consultar 10000 a la vez (100 lotes) =8,4 s
Consultar 100 000 a la vez (10 lotes) =9 s (según los resultados originales anteriores)

Por lo tanto, parece haber un punto óptimo para cuántos valores agrupar en una cláusula $in frente a la cantidad de viajes de ida y vuelta