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

profile (comando de banco de dados)

profile

Alterado 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ância mongod em 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 estiver 2, o log completo será habilitado no criador de perfil e no diagnostic log.

No nível do perfil do banco de dados 1, as seguintes configurações modificam tanto o perfil quanto o diagnostic log:

Se o nível do perfil do banco de dados for 0, o perfil do banco de dados será desabilitado. No nível 0, 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ância mongos porque mongos nã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 de dados level, slowms, sampleRate, ou filter usando o comando profile ou o método wrapper db.setProfilingLevel() são registradas no log file.

Em mongos, você pode definir profile nível para:

  • 0 para definir slowms, sampleRate e filter para o registro de diagnóstico;

  • -1 para 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.

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

O comando tem a seguinte sintaxe:

db.runCommand(
{
profile: <level>,
slowms: <threshold>,
sampleRate: <rate>,
filter: <filter expression>
}
)

O comando utiliza os seguintes campos:

Campo
Tipo
Descrição

profile

int

Configura o nível do perfil. Os seguintes níveis de analisador estão disponíveis:

0

O analisador está desligado e não coleta dados. Este é o nível do analisador padrão.

1

O profiler coleta dados para operações que excedem o limite de slowms ou correspondem a um filtro especificado.

Quando um filtro é definido:

  • As opções slowms e sampleRate não são usadas para análise.

  • O criador de perfil captura somente as operações que correspondem ao filtro.

2

O analisador coleta dados para todas as operações.

Ao definir para o nível 2, o profiler ignora os valores fornecidos pelo usuário para slowms e filter.

Como a criação de perfil não está disponível no mongos, o comando profile não pode ser usado para definir o nível do perfil para um valor diferente de 0 em uma instância mongos.

slowms

int

Opcional. Padrão: 100

O limite do tempo de operação lenta, em milissegundos. As operações executadas por mais tempo que esse limite são consideradas lentas.

As operações lentas são registradas com base em workingMillis, que é a quantidade de tempo que o MongoDB gasta trabalhando nessa operação. Isso significa que fatores como a espera por bloqueios e o controle de fluxo não afetam o fato de uma operação exceder o limite de operação lenta.

Quando logLevel é definido como 0, o MongoDB registra operações lentas no log de diagnóstico a uma taxa determinada por slowOpSampleRate.

Em configurações logLevel mais altas, todas as operações aparecem no log de diagnóstico, independentemente de sua latência, com a seguinte exceção: o log de mensagens de entrada lentas de oplog pelos secundários. Os secundários registram apenas as entradas lentas do oplog; aumentar o logLevel não registra todas as entradas do oplog.

Este argumento afeta a mesma configuração que a opção de configuração operationProfiling.slowOpThresholdMs.

sampleRate

double

Opcional. Padrão: 1.0

A fração de operações lentas que devem ser analisadas ou registradas. sampleRate aceita valores entre 0 e 1, inclusive.

Esse argumento afeta a mesma configuração da opção de configuração operationProfiling.slowOpSampleRate e não afeta as mensagens de log de entrada lenta do oplog em secundários.

filter

objeto

Opcional. Uma query que determina quais operações são perfiladas ou registradas.

A query de filtro recebe o seguinte formulário:

{ <field1>: <expression1>, ... }

A query pode ser qualquer operação find() legal em que a query <field> corresponda a um campo na saída do profiler.

Este argumento afeta a mesma configuração que a opção de configuração operationProfiling.filter. Quando filter está definido, as opções slowms e sampleRate não são utilizadas para perfis e linhas de registro de query lenta.

Os métodos de shell db.getProfilingStatus() e db.setProfilingLevel() fornecem envoltórios em torno do comando profile.

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.

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 100 milissegundos de duração, ou

  • enviado pelo testuser.

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().