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: 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
Sintaxe
O comando tem a seguinte sintaxe:
db.adminCommand( { configureQueryAnalyzer: <string>, mode: <string>, samplesPerSecond: <double> } )
Campos de comando
db.collection.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.
For details, see samplesPerSecond Upper Limit. |
Controle de acesso
db.collection.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 db.collection.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.
Conversão para cluster fragmentado
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.
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
You cannot run
configureQueryAnalyzeron Atlas flex clusters.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" } )