Definição
profileAlterado na versão 5.0.
Para uma instância do
mongod, o comando habilita, desabilita ou configura o analisador de banco de dados. O analisador captura e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados em uma instânciamongodem execução. Se o analisador estiver desabilitado, o comando configurará como as operações lentas serão registradas no registro de diagnóstico.Em
mongod, se o nível do criador de perfil do banco de dados estiver2, o log completo será habilitado no criador de perfil e nodiagnostic log.No nível do perfil do banco de dados
1, as seguintes configurações modificam tanto o perfil quanto odiagnostic log:Se o nível do perfil do banco de dados for
0, o perfil do banco de dados será desabilitado. No nível0, as seguintes configurações modificam apenas o registro de diagnóstico:Para uma instância do
mongos, o comando configura somente como as operações são gravadas no registro de diagnóstico. Não é possível habilitar o criador de profiler de banco de dados de dados em uma instânciamongosporquemongosnão tem nenhuma coleção na qual o criador de profiler possa gravar.A partir do MongoDB,5.0 as alterações feitas no profiler de banco
levelslowmsdesampleRatedados,, oufilterusando oprofilecomando ou método wrapper sãodb.setProfilingLevel()registradaslog fileno.Em
mongos, você pode definirprofilenível para:0para definirslowms,sampleRateefilterpara o registro de diagnóstico;-1para ler as configurações atuais.
O profiler está desativado por padrão.
Aviso
A análise pode degradar o desempenho e expor dados de query não criptografados no registro do sistema. Considere cuidadosamente quaisquer implicações de desempenho e segurança antes de configurar e habilitar o analisador em um sistema de produção.
Consulte Sobrecarga do criador de perfil para obter mais informações sobre a possível degradação do desempenho.
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.runCommand( { profile: <level>, slowms: <threshold>, sampleRate: <rate>, filter: <filter expression> } )
Campos de comando
O comando utiliza os seguintes campos:
Campo | Tipo | Descrição | |
|---|---|---|---|
| int | Configura o nível do perfil. Os seguintes níveis de analisador estão disponíveis:
Como a criação de perfil não está disponível | |
| int | Opcional. Padrão: 100 O limite do tempo de operação lento, em milissegundos. As operações executadas por mais tempo que esse limite são consideradas lentas. Quando Em configurações Este argumento afeta a mesma configuração que a opção de configuração | |
| double | Opcional. Padrão: 1.0 A fração de operações lentas que devem ser analisadas ou registradas. Esse argumento afeta a mesma configuração da opção de configuração | |
| objeto | Opcional. Uma query que determina quais operações são perfiladas ou registradas. A query de filtro recebe o seguinte formulário: A query pode ser qualquer operação Este argumento afeta a mesma configuração que a opção de configuração |
Os db.getProfilingStatus() db.setProfilingLevel() métodos de shell e profile fornecem invólucros em torno do comando.
Comportamento
O comando obtém um bloqueio de gravação no banco de dados afetado enquanto habilita ou desabilita profile profile o profiler. Normalmente, essa é uma operação curta. A bloqueio bloqueia outras operações até que o comando seja concluído.
Quando conectado a um cluster fragmentado por meio de, você mongos profile pode executar o comando em qualquer banco de dados.
Exemplo
Habilitar filtragem
Para habilitar o perfil e filtrar os dados registrados:
db.runCommand( { profile: 1, filter: { $or: [ { millis: { $gte: 100 } }, { user: "testuser@admin" } ] } } )
O filtro seleciona apenas as operações que são:
pelo menos
100milissegundos de duração, ouenviado pelo
testuser.
Redefinir um filtro
Para limpar um filtro de perfil, execute profile com a opção filter: "unset".
db.runCommand( { profile: 1, filter: "unset" } )
A operação retorna um documento com os valores anteriores para as configurações.
Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().