Definição
configureQueryAnalyzerNovidades 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
analyzeShardKeycalcular métricas sobre a distribuição de leitura e escrita de uma chave de shard.
Compatibilidade
Esse comando está disponível em implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
Observação
Este comando é aceito em todos os clusters do MongoDB Atlas. Para obter informações sobre o suporte do Atlas a todos os comandos, consulte Comandos não suportados.
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
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { configureQueryAnalyzer: <string>, mode: <string>, samplesPerSecond: <double> } )
Campos de comando
configureQueryAnalyzer tem os seguintes campos:
Campo | Tipo | necessidade | Descrição |
|---|---|---|---|
| string | Obrigatório | namespace da collection para configurar a amostragem de query. |
| string | Obrigatório | Modo em que o analisador de query é executado. Deve ser definido como |
| double | Opcional | Número de amostras por segundo.
Para obter detalhes, consulte o Limite superior de amostras por segundo. |
Controle de acesso
configureQueryAnalyzer requer uma das seguintes funções:
dbAdminfunção no reconhecimento de data center que contém a collection que está sendo analisadaclusterManagerrole em relação ao cluster
Comportamento
Considere o seguinte comportamento ao executar o configureQueryAnalyzer:
collection descartadas e collection renomeadas
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.
Limite superior de amostras por segundo
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 |
queryAnalysisSampleExpirationSecs
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.
Progresso da amostragem de query
Para monitorar o processo de amostragem de queries, use o estágio $currentOp. Para obter um exemplo, consulte Queries de amostra.
Exibir query 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.
Limitações
Você não pode executar
configureQueryAnalyzerem clusters flexíveisdo Atlas.Você não pode executar
configureQueryAnalyzerem sistemas autônomo.Você não pode executar o
configureQueryAnalyzerdiretamente em um conjunto de réplicas do--shardsvr. Ao executar em um cluster fragmentado, oconfigureQueryAnalyzerdeve ser executado em ummongos.Você não pode executar
configureQueryAnalyzerem collection de time-series .Não é possível executar
configureQueryAnalyzerem collection com Queryable Encryption.
Saída
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.newConfigurationcontém campos que descrevem a nova configuração.
configureQueryAnalyzer retorna um documento semelhante ao seguinte:
{ ok: 1, oldConfiguration: { mode: ..., samplesPerSecond: ... } newConfiguration: { ... } }
Exemplos
Habilitar amostragem de query
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 } )
Desativar amostragem de query
Para desabilitar a amostragem de query na collection test.students , utilize o seguinte comando:
db.adminCommand( { configureQueryAnalyzer: "test.students", mode: "off" } )