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 só está disponível 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 será executada simultaneamente. Por exemplo, quando muitas queries simultâneas são enfileiradas, o MongoDB Search pode voltar para a 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 solicitar o MongoDB Search para paralelizar a execução de queries entre segmentos, o que, em muitos casos, melhora o tempo de resposta. Você pode configurar 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.
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 ])