A configuração log_min_duration_statement é ignorada

15

Estou executando Postgresql 9.1no Ubuntu. A versão exata do Postgresql é 9.1+129ubuntu1como meu gerenciador de pacotes mostra.

Eu tenho 2 bancos de dados ativamente em uso e eles são usados ​​em um servidor remoto.

Desejo registrar consultas com um longo tempo de execução. Então eu defino os seguintes parâmetros no /etc/postgresql/9.1/main/postgresql.confarquivo

log_min_duration_statement = 10000
log_statement = 'mod'

então o Postgresql registrará consultas que levam mais de 10 segundos.

Mas quando eu reloadconfiguro o postgres, o Postgresql começa a registrar todas as consultas que se ajustam ao log_statementvalor. Que eu defino a duração para 100 segundos para ter certeza

log_min_duration_statement = 100000

Mas o Postgresql continua registrando todas as consultas que se ajustam ao log_statementvalor, independentemente do log_min_duration_statementvalor.

Definir log_statementpara noneparecia parar de registrar.

Há algo que eu perdi na configuração?

Anjo caído
fonte
O fato é que você registra a união dos dois conjuntos, não a interseção. Não sei se isso pode ser feito como você gostaria.
Dezso
Então, devo desativar (comentar) log_statementpara log_min_duration_statementque funcione?
precisa saber é o seguinte
Se você deseja simplesmente registrar todas as instruções de execução longa (seja uma SELECT, UPDATEou alguma DDL), então sim.
Dezso

Respostas:

21

Você estava perto. Sua última idéia é realmente o caminho a seguir:

log_statement = none
log_min_duration_statement = 10000

Em seguida, nenhuma instrução será registrada, exceto aquelas executadas por mais de 10 segundos - incluindo a própria string de consulta. O registro pode ter parado porque 10 segundos é um limite alto. Estou usando 2 segundos normalmente, mas YMMV.

Esta resposta relacionada ao SO tem mais:
Não é possível obter log_min_duration_statement para funcionar

Erwin Brandstetter
fonte
3
Deixe-me acrescentar que o padrão para log_statementé none, portanto, não defini-lo ou defini-lo como nonetem o mesmo efeito.
Dezso