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.

Starting in MongoDB 5.0, changes made to the database profiler level, slowms, sampleRate, or filter using the profile command or db.setProfilingLevel() wrapper method are recorded in the 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: 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

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 criador de perfil coleta dados de operações que demoram mais do que o valor de slowms ou que correspondem a um filtro.

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 profiler 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.

Since profiling is not available on mongos, the profile command cannot be used to set the profiling level to a value other than 0 on a mongos instance.

slowms

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

The db.getProfilingStatus() and db.setProfilingLevel() shell methods provide wrappers around the profile command.

The profile command obtains a write lock on the affected database while enabling or disabling the profiler. This is typically a short operation. The lock blocks other operations until the profile command has completed.

When connected to a sharded cluster through mongos, you can run the profile command against any database.

Para habilitar o perfil e filtrar os dados registrados:

db.runCommand(
{
profile: 1,
filter:
{
$or:
[
{ millis: { $gte: 100 } },
{ user: "testuser@admin" }
]
}
}
)

The filter only selects operations that are:

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