db.setProfilingLevel()
Nesta página
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ânciamongod
em 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 para0
(o padrão) ou o valor definido pela configuraçãooperationProfiling.mode
ou pela opção de linha de comando--profile
.Se o nível do profiler de banco de dados do for
1
ou2
(especificamente, o profiler de banco de dados estiver ativado), o slowms e o sampleRate afetarão o comportamento do profiler e dodiagnostic 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çãoslowms
,sampleRate
efilter
, 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ânciamongos
porquemongos
não possui nenhuma coleção nas quais o profiler possa gravar. O nívelprofile
deve ser0
para uma instânciamongos
.Você pode especificar um filtro nas instâncias
mongod
emongos
para controlar quais operações são registradas pelo profiler. Quando você especifica umfilter
para 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 comandoprofile
.A partir do MongoDB 5.0, as alterações feitas no profiler de banco de dados
level
,slowms
,sampleRate
oufilter
usando o comandoprofile
ou o método encapsuladordb.setProfilingLevel()
são registradas nolog file
.
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 o profiling 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 argumento
|
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" : NumberLong("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" : NumberLong("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 defilter
. Este campo aparece somente no resultado quandofilter
també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
20
milissegundos, eo 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
20
milissegundos, eo 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 apenasquery
operaçõ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()
.