A opção concurrent habilita o paralelismo intraconsulta. Nesse modo, o MongoDB Search utiliza mais recursos, mas melhora cada latência de query individual. Esse recurso está disponível apenas para nós de pesquisa dedicados.
concurrent Limitações de opção
Quando você executa queries com a opção concurrent, o MongoDB Search não garante que cada query seja executada simultaneamente. Por exemplo, quando muitas queries simultâneas estão na fila, o MongoDB Search pode voltar à execução de thread único.
Sintaxe
concurrent tem a seguinte sintaxe:
{ "$searchMeta"|"$search": { "index": "<index name>", // optional, defaults to "default" "<operator>": { <operator-specifications> }, "concurrent": true | false, ... } }
Comportamento
A opção booleana concurrent permite que você faça uma solicitação ao MongoDB Search para paralelizar a execução da query entre segmentos, o que geralmente melhora o tempo de resposta. Você pode definir um dos seguintes valores para a opção concurrent:
true- para solicitar o MongoDB Search para executar a query em várias threadsfalse- para executar a query de thread único (padrão)
O MongoDB Search oferece controle sobre esse comportamento por query para permitir a execução simultânea somente para queries pesadas e de longa duração, o que minimiza a contenção e melhora a taxa de transferência geral da query. A execução simultânea é especialmente eficiente em grandes conjuntos de dados, pois há uma quantidade maior de segmentos.
Uso da CPU
O MongoDB Search executa uma query concorrente em várias threads, de modo que a query é concluída mais rapidamente. Mas a query consome mais CPU em seus nós de pesquisa enquanto executa. Habilitar a opção concurrent para query de alto volume ou de curta duração pode saturar a CPU nos nós de pesquisa e reduzir a taxa de transferência geral da query. Para limitar o impacto na CPU, ative a opção concurrent apenas para as query pesadas e de longa duração que se beneficiam de menor latência.
Para medir o custo de CPU de uma query individual, execute a query com explain e revise os campo userTimeMs, systemTimeMs e maxReportingThreads no documento resourceUsage.
To monitor CPU usage across your deployment, view the Atlas cluster metrics and the Review MongoDB Search Metrics. Atlas can also trigger MongoDB Search alerts that measure the amount of CPU that MongoDB Search processes use. If CPU usage approaches the limits of acceptable performance, scale your Search Nodes vertically or horizontally. To learn more, see Tips for Sizing and Scaling Search Nodes.
Exemplo
Consider the following query against the sample_mflix.movies collection in the sample data. The query indicates a concurrent search for movies that contain the term new york in the title.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "path": "title", 6 "query": "new york" 7 }, 8 "concurrent": true 9 } 10 } 11 ])