La opción concurrent permite el paralelismo entre query. En este modo, MongoDB Search utiliza más recursos, pero mejora la latencia de cada query individual. Esta funcionalidad solo está disponible para nodos de búsqueda dedicados.
concurrent Limitaciones de opciones
Cuando ejecuta query con la opción concurrent, MongoDB Search no ofrece garantías de que cada query se ejecute simultáneamente. Por ejemplo, cuando demasiadas queries concurrentes están en cola, MongoDB Search podría volver a la ejecución de un solo suproceso.
Sintaxis
concurrent tiene la siguiente sintaxis:
{ "$searchMeta"|"$search": { "index": "<index name>", // optional, defaults to "default" "<operator>": { <operator-specifications> }, "concurrent": true | false, ... } }
Comportamiento
La opción booleana concurrent le permite hacer una solicitud a MongoDB Search para que paralelice la ejecución de queries en todos los segmentos, lo que a menudo mejora el tiempo de respuesta. Puede establecer uno de los siguientes valores para la opción concurrent:
true- para solicitar que MongoDB Search ejecute la query con múltiples subprocesosfalse- para ejecutar la query en un solo hilo (por defecto)
MongoDB Search te permite controlar este comportamiento query por query para permitir la ejecución simultánea solo de queries intensas y de larga duración, lo que minimiza la contención y mejora el rendimiento de la query en general. La ejecución concurrente es especialmente eficiente en grandes conjuntos de datos, ya que hay una mayor cantidad de segmentos.
Uso de la CPU
MongoDB Search ejecuta una query concurrente en múltiples hilos, por lo que la query se completa más rápido. Pero la query consume más CPU en sus nodos de búsqueda mientras se ejecuta. Habilitar la opción concurrent para query de gran volumen o de ejecución corta puede saturar la CPU en sus nodos de búsqueda y reducir el rendimiento general de la query. Para limitar el impacto en la CPU, habilite la opción concurrent solo para las query pesadas y de larga duración que se beneficien de una latencia más baja.
Para medir el costo de CPU de una query individual, ejecute la query con explain y haga una revisión de los campos userTimeMs, systemTimeMs y maxReportingThreads en el documento resourceUsage.
Para supervisar el uso de la CPU en toda la implementación, consulte las métricas del clúster de Atlas y la revisión de las métricas de MongoDB Search. Atlas también puede activador alertas de MongoDB Search que miden la cantidad de CPU que utilizan los procesos de MongoDB Search. Si el uso de la CPU se acerca a los límites de un rendimiento aceptable, escale sus nodos de búsqueda vertical u horizontalmente. Para obtener más información, consulta Consejos para dimensionar y escalar nodos de búsqueda.
Ejemplo
Considere la siguiente query sobre la colección sample_mflix.movies de los datos de muestra. La query indica una búsqueda simultánea de películas que contienen el término new york en el title.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "path": "title", 6 "query": "new york" 7 }, 8 "concurrent": true 9 } 10 } 11 ])