Definição
- db.setProfilingLevel(level, options)
- Alterado na versão 5.0. - Para uma instância - mongod, o método habilita, desabilita ou configura o Profiler de banco de dados. O profiler capta e registra dados sobre o desempenho de operações de gravação, cursores e comandos de banco de dados em uma instância- mongodem execução. Se o profiler estiver desabilitado, o método configurará como as operações lentas serão registradas no log de diagnóstico.- Observação- As alterações feitas no nível de profiling com - db.setProfilingLevel()não persistem. Quando o servidor é reiniciado, ele reverte para- 0(o padrão) ou o valor definido pela configuração- operationProfiling.modeou pela opção de linha de comando- --profile.- Se o analisador de banco de dados for - 1ou- 2(especificamente, o profiler de banco de dados estiver ativado), o slowms e o sampleRate afetarão o comportamento do criador de perfil e do- diagnostic log.- Se o nível do profiler de banco de dados for - 0(especificamente, o profiler de banco de dados estiver desabilitado), os slowms e sampleRate afetarão somente o log de diagnóstico.- Com instâncias - mongos, o método define os ajustes de configuração- slowms,- sampleRatee- filter, que definem como as operações são gravadas no registro de diagnóstico. Não é possível ativar o profiler de banco de dados em uma instância- mongosporque- mongosnão possui nenhuma coleção nas quais o profiler possa gravar. O nível- profiledeve ser- 0para uma instância- mongos.- Você pode especificar um filtro nas instâncias - mongode- mongospara controlar quais operações são registradas pelo profiler. Quando você especifica um- filterpara o profiler, as opções slowms e sampleRate não são usadas para perfilar e linhas de log de query lenta.- db.setProfilingLevel()fornece um encapsulador em torno do comando- profile.- A partir do MongoDB 5.0, as alterações feitas no profiler de banco de dados - level,- slowms,- sampleRateou- filterusando o comando- profileou o método encapsulador- db.setProfilingLevel()são registradas no- log file.
Compatibilidade
Esse método está disponível em implantações hospedadas nos seguintes ambientes:
- MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem 
Importante
Esse comando não é suportado em clusters M0 e Flex. Para obter mais informações, 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 método db.setProfilingLevel() tem o seguinte formato:
db.setProfilingLevel(<level>, <options>) 
Parâmetros
| Parâmetro | Tipo | Descrição | ||||||
|---|---|---|---|---|---|---|---|---|
| inteiro | Configura o nível do perfil do banco de dados. Os seguintes níveis de analisador estão disponíveis: 
 Como a criação de perfil não está disponível em  | |||||||
| documento ou valor inteiro | Opcional. Aceita um valor inteiro ou um documento de opções. Se um valor inteiro for fornecido como  
 | 
Devoluções
O método retorna um documento que contém os valores anteriores das configurações.
{    "was" : 2,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gt" : 20000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1 } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "$clusterTime" : {       "clusterTime" : Timestamp(1572991238, 1),       "signature" : {          "hash" : BinData(0,"hg6GnlrVhV9MAhwWdeHmHQ4T4qU="),          "keyId" : Long("6755945537557495811")       }    },    "operationTime" : Timestamp(1572991238, 1) } 
{    "was" : 0,    "slowms" : 100,    "sampleRate" : 1,    "filter" : {       "$and" : [          {             "op" : {                "$eq" : "query"             }          },          {             "millis" : {                "$gte" : 2000             }          }       ]    },    "note" : "When a filter expression is set, slowms and sampleRate are not used for profiling and slow-query log lines.",    "ok" : 1,    "operationTime" : Timestamp(1572991499, 2),    "$clusterTime" : {       "clusterTime" : Timestamp(1572991499, 2),       "signature" : {          "hash" : BinData(0,"nhCquIxUw7thlrBudXe3PnsnvP0="),          "keyId" : Long("6755946491040235540")       }    } } 
Onde:
- wasé a configuração deanterior de nível.
- slowmsé a configuração de anterior de slowms.
- sampleRateé a configuração anterior de sampleRate.
- filteré a configuração anterior de filtro.
- noteé uma string explicando o comportamento de- filter. Este campo aparece somente no resultado quando- filtertambém está presente.
Observação
Os campos filter e note só aparecem na saída se estiverem presentes na configuração de nível anterior.
Para visualizar o nível do profiling atual, consulte db.getProfilingStatus().
Comportamento
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.
Exemplos
Habilite o profiler e defina o limite de operação lenta e a taxa de amostragem
Os seguintes conjuntos de exemplo para uma instância do mongod:
- o nível de perfil para - 1,
- o limite de operação lenta slowms para - 20milissegundos, e
- o sampleRate para - 0.42.
db.setProfilingLevel(1, { slowms: 20, sampleRate: 0.42 }) 
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().
Desative o profiler e defina o limite de operação lenta e a taxa de amostragem
O exemplo seguinte define a instância mongod ou mongos:
- o nível de perfil para - 0,
- o limite de operação lenta slowms para - 20milissegundos, e
- o sampleRate para - 0.42.
db.setProfilingLevel(0, { slowms: 20, sampleRate: 0.42 }) 
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().
Definir um filtro para determinar as operações perfiladas
Os seguintes conjuntos de exemplo para uma instância do mongod:
- o nível de perfil para - 1,
- um filtro de - { op: "query", millis: { $gt: 2000 } }, que faz com que o profiler registre apenas- queryoperações que demoraram mais de 2 segundos.
db.setProfilingLevel( 1, { filter: { op: "query", millis: { $gt: 2000 } } } ) 
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().
Redefinir um filtro
Para limpar um filtro de perfil, execute db.setProfilingLevel() com a opção filter: "unset".
db.setProfilingLevel( 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().