Paralelizar a execução de queries entre segmentos
Nesta página
A opção concurrent
habilita o paralelismo intra-consulta. Nesse modo, o Atlas Search utiliza mais recursos, mas melhora a latência de cada query individual. Esse recurso está disponível somente para nós de pesquisa dedicados.
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ê solicite o Atlas Search para paralelizar a execução de consultas entre segmentos, o que, em muitos casos, melhora o tempo de resposta. Você pode definir um dos seguintes valores para a opção concurrent
:
true
- para solicitar ao Atlas Search para executar a query multi-threadfalse
- para executar a query de thread único (padrão)
O Atlas Search fornece controle sobre esse comportamento a cada query a fim de habilitar a execução simultânea apenas para queries pesadas e de longa execução, o que minimiza a contenção e melhora a taxa de transferência geral da query. A execução simultânea é particularmente eficiente em grandes conjuntos de dados, pois há uma quantidade maior de segmentos.
Limitação
Quando você executa queries com a opção concurrent
, o Atlas Search não garante que cada query seja executada simultaneamente. Por exemplo, quando muitas queries simultâneas estão na fila, o Atlas Search pode voltar à execução de thread único.
Exemplo
Considere a seguinte consulta na coleção sample_mflix.movies nos dados de exemplo. A consulta indica uma pesquisa simultânea de filmes que contêm o termo new york
no title
.
1 db.movies.aggregate([ 2 { 3 "$search": { 4 "text": { 5 "path": "title", 6 "query": "new york" 7 }, 8 "concurrent": true 9 } 10 } 11 ])