Definição
profileAlterado na versão 5.0.
Para uma instância do
mongod, o comando habilita, desabilita ou configura o analisador de profiler de banco de dados de dados. O profiler captura e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados de dados em uma instânciamongodem execução. Se o profiler 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 analisador de banco de dados
level,slowms,sampleRateoufilterusando o comandoprofileoudb.setProfilingLevel()método wrapper são registradas nolog file.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 em | |
| 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 métodos de shell db.getProfilingStatus() e db.setProfilingLevel() fornecem envoltórios em torno do comando profile.
Comportamento
O comando profile obtém um bloqueio de gravação no banco de dados afetado enquanto habilita ou desabilita o profiler. Normalmente, essa é uma operação curta. A trava bloqueia outras operações até que o comando profile seja concluído.
Quando conectado a um cluster fragmentado por meio de mongos, é possível executar o comando profile 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().