la configuración log_min_duration_statement se ignora

15

Estoy corriendo Postgresql 9.1en Ubuntu. La versión exacta de Postgresql es 9.1+129ubuntu1como muestra mi administrador de paquetes.

Tengo 2 bases de datos que se usan activamente y se usan desde un servidor remoto.

Deseo registrar consultas que tengan un largo tiempo de ejecución. Así que configuré los siguientes parámetros en el /etc/postgresql/9.1/main/postgresql.confarchivo

log_min_duration_statement = 10000
log_statement = 'mod'

entonces Postgresql registrará consultas que demoren más de 10 segundos.

Pero cuando reloadconfiguro Postgres, Postgresql comienza a registrar cada consulta que se ajusta al log_statementvalor. Que establezca la duración en 100 segundos para estar seguro

log_min_duration_statement = 100000

Pero Postgresql sigue registrando cada consulta que se ajusta al log_statementvalor, independientemente del log_min_duration_statementvalor.

Establecer log_statementa noneparecía dejar de iniciar sesión.

¿Hay algo que me haya perdido de la configuración?

Ángel caido
fuente
La cuestión es que registra la unión de los dos conjuntos, no la intersección de los mismos. No sé si se puede hacer como quisiera.
dezso
Entonces, ¿debería deshabilitar (comentar), log_statementasí que log_min_duration_statementdebería funcionar?
FallenAngel
Si simplemente desea registrar todas las sentencias de larga ejecución (ya sea una SELECT, UPDATEo alguna DDL), entonces sí.
dezso

Respuestas:

21

Estabas cerca Su última idea es en realidad el camino a seguir:

log_statement = none
log_min_duration_statement = 10000

Entonces, no se registrará ninguna declaración, excepto las que se ejecutan por más de 10 segundos, incluida la cadena de consulta en sí. El registro puede haber parecido detenerse porque 10 segundos es un umbral alto. Estoy usando 2 segundos normalmente, pero YMMV.

Esta respuesta relacionada en SO tiene más:
No se puede lograr que log_min_duration_statement funcione

Erwin Brandstetter
fuente
3
Permítanme agregar que el valor predeterminado para log_statementes none, por lo que no establecerlo o establecerlo nonetiene el mismo efecto.
dezso