Mecanismo de execução de consulta baseado em slot
Nesta página
Novidades na versão 5.1.
Para encontrar e retornar resultados de query, o MongoDB usa um dos seguintes mecanismos de consulta:
O mecanismo de query clássico
O mecanismo de execução de queries baseado em slots, que está disponível para algumas queries a partir do MongoDB 5.1.
O MongoDB seleciona automaticamente o mecanismo para executar a query. Nas versões do MongoDB anteriores à 8.0, você não pode especificar manualmente um mecanismo para uma query específica. A partir do MongoDB 8.0, você pode usar as configurações de query para especificar um mecanismo para queries. Para mais informações, consulte setQuerySettings
.
O MongoDB pode usar o mecanismo de execução de query baseado em slot para um subconjunto de queries, desde que determinadas condições sejam atendidas. Na maioria dos casos, o mecanismo de execução baseado em slot fornece desempenho aprimorado e custos de CPU e memória mais baixos em comparação com o mecanismo de query clássico.
O MongoDB usa o engine clássico para queries que não são elegíveis para o mecanismo de execução de queries basedo em slots.
Queries qualificadas para o mecanismo de execução baseado em slots
O MongoDB determina a elegibilidade para usar o mecanismo de execução baseado em slot em uma base por consulta e considera suporte para cada operador e expressões presentes na consulta. Por exemplo, dois pipelines comuns que utilizam mecanismo de execução baseado em slot são agregações com estágios do $group
ou $lookup
. No entanto, o suporte para o mecanismo de execução baseado em slots é específico da versão e está mudando ativamente.
Para saber se a sua query usou o mecanismo de execução baseado em slots, consulte a seção Determinarqual mecanismo de query foi usado.
Processamento de blocos
A partir da versão 8.0, O MongoDB pode executar determinadas queries de séries temporais usando processamento de blocos. Essa melhoria de desempenho processa as queries em "blocos" de dados, em vez de valores individuais. O processamento de blocos melhora a velocidade de execução da query e a taxa de transferência ao trabalhar com coleções de séries temporais.
Para saber mais, consulte Consultando dados de séries temporais.
Determine qual mecanismo de query foi usado
Há algumas maneiras de determinar se o engine clássico ou o engine de execução baseado em slot foi usado para executar uma query.
Verifique a query e explique os resultados
Os resultados explicativos de uma query diferem dependendo do mecanismo de query usado. Por exemplo, os resultados explicativos das queries executadas usando o mecanismo de execução baseado em slots incluem o campo explain.queryPlanner.winningPlan.slotBasedPlan
.
Para obter mais informações sobre as diferenças nos resultados de explicação entre os mecanismos de query, consulte Explicar a estrutura de saída.
Verificar registros de query lenta
A partir do MongoDB 6.2, as mensagens de registro de operação lenta incluem um campo queryFramework
que indica qual mecanismo de consulta executou a consulta:
queryFramework: "classic"
indica que o mecanismo clássico executou a consulta.queryFramework: "sbe"
indica que o mecanismo de execução de consulta baseado em slot executou a consulta.
Para ver um exemplo de mensagem de registro para uma query que usou o mecanismo de execução baseado em slot, consulte Operação lenta.