Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

configureQueryAnalyzer (comando de banco de dados)

configureQueryAnalyzer

Novidades na versão 7.0.

Configura a amostragem de query para uma collection em um conjunto de réplicas ou cluster fragmentado. Exemplos de queries fornecem informações para analyzeShardKey calcular métricas sobre a distribuição de leitura e escrita de uma chave de shard.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud

Observação

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see Unsupported Commands.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.adminCommand(
{
configureQueryAnalyzer: <string>,
mode: <string>,
samplesPerSecond: <double>
}
)

db.collection.configureQueryAnalyzer() tem os seguintes campos:

Campo
Tipo
necessidade
Descrição

configureQueryAnalyzer

string

Obrigatório

namespace da collection para configurar a amostragem de query.

mode

string

Obrigatório

Modo em que o analisador de query é executado. Deve ser definido como "full" ou "off".

samplesPerSecond

double

Opcional

Número de amostras por segundo.

  • Quando mode está definido como "full", samplesPerSecond deve ser definido entre 0 e 50.

  • Quando mode está definido para "off", o servidor ignora samplesPerSecond.

For details, see samplesPerSecond Upper Limit.

db.collection.configureQueryAnalyzer() requer uma das seguintes funções:

  • dbAdmin função no reconhecimento de data center que contém a collection que está sendo analisada

  • clusterManager role em relação ao cluster

Considere o seguinte comportamento ao executar o db.collection.configureQueryAnalyzer():

A query sampling é desativada automaticamente quando a collection é descartada ou renomeada. Se você quiser amostrar queries depois que uma collection for recriada ou renomeada, será necessário reconfigurar a amostragem de query.

Se você tiver a análise de query em execução em um conjunto de réplicas e convertê-la em um cluster fragmentado com um servidor de configuração dedicado, ela interromperá a análise de query.

O limite superior para samplesPerSecond é 50. Uma taxa mais alta faz com que a query de amostra preencha 10 GB de espaço em disco em menos de quatro dias.

Esta tabela mostra o uso estimado do disco para cada combinação de taxa de amostragem e duração:

Tamanho Médio da query Amostrada (kB)
samplesPerSecond
Duração da amostragem (dias)
Número de query como amostra
Tamanho total das queries de amostra (GB)

0.5

0.1

7

60.480

0.03024

0.5

10

7

6.048.000

3.024

0.5

50

7

30.240.000

15.12

1000

50

1

4.320.000

4320

16.000

50

1

4.320.000

69.120

Sampled query são armazenadas em uma collection interna que tem um índice TTL com expireAfterSeconds. Para configurar o expireAfterSeconds, utilize o parâmetro do servidor queryAnalysisSampleExpirationSecs . Exemplos de query são excluídas automaticamente após queryAnalysisSampleExpirationSecs.

Para monitorar o processo de amostragem de queries, use o estágio $currentOp. Para obter um exemplo, consulte Queries de amostra.

Para ver queries de amostra de todas as collections ou de uma collection específica, use o estágio de aggregation $listSampledQueries .

Para ver a contagem de cada tipo de comando capturado pelo analisador de query, use:

db.getSiblingDB("admin").aggregate( [
{ "$listSampledQueries": { ns: "<db.collectionName>" } },
{
"$group": {
"_id": {
ns: "$ns",
cmdName: "$cmdName"
},
count: { "$sum": 1 }
}
},
{
"$project": {
"_id.ns": 1,
"_id.cmdName": 1,
"count": 1 // Explicitly include fields to output
}
},
{ "$sort": { "_id.ns": 1 } }
] );
[{ count: 10, cmdName: 'aggregate' },
{ count: 51, cmdName: 'delete' },
{ count: 25, cmdName: 'distinct' },
{ count: 100, cmdName: 'find' },
{ count: 24, cmdName: 'findAndModify' },
{ count: 7, cmdName: 'update' }]

Quando tiver amostras suficientes, você pode desabilitar o analisador de query.

  • You cannot run configureQueryAnalyzer on Atlas flex clusters.

  • Você não pode executar configureQueryAnalyzer em sistemas autônomo.

  • Você não pode executar o configureQueryAnalyzer diretamente em um conjunto de réplicas do --shardsvr . Ao executar em um cluster fragmentado, o configureQueryAnalyzer deve ser executado em um mongos.

  • Você não pode executar configureQueryAnalyzer em collection de time-series .

  • Não é possível executar configureQueryAnalyzer em collection com Queryable Encryption.

configureQueryAnalyzer retorna um documento contendo campos que descrevem a configuração antiga, se houver, e campos que descrevem a nova configuração.

  • oldConfiguration, se existir, contém campos que descrevem a configuração antiga.

  • newConfiguration contém campos que descrevem a nova configuração.

configureQueryAnalyzer retorna um documento semelhante ao seguinte:

{
ok: 1,
oldConfiguration: {
mode: ...,
samplesPerSecond: ...
}
newConfiguration: {
...
}
}

Para habilitar a amostragem de query na collection test.students a uma taxa de cinco amostras por segundo, use o seguinte comando:

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "full",
samplesPerSecond: 5
}
)

Para desabilitar a amostragem de query na collection test.students , utilize o seguinte comando:

db.adminCommand(
{
configureQueryAnalyzer: "test.students",
mode: "off"
}
)