web-dev-qa-db-fra.com

Le paramètre log_min_duration_statement est ignoré

Je cours Postgresql 9.1 sur Ubuntu. La version exacte de Postgresql est 9.1+129ubuntu1 comme le montre mon gestionnaire de paquets.

J'ai 2 bases de données activement utilisées et utilisées à partir d'un serveur distant.

Je souhaite enregistrer les requêtes qui ont un long temps d'exécution. J'ai donc défini les paramètres suivants dans /etc/postgresql/9.1/main/postgresql.conf fichier

log_min_duration_statement = 10000
log_statement = 'mod'

postgresql enregistre donc les requêtes qui prennent plus de 10 secondes.

Mais quand je reload la configuration de postgres, Postgresql commence à enregistrer chaque requête qui correspond à log_statement valeur. Que je fixe la durée à 100 secondes pour être sûr

log_min_duration_statement = 100000

Mais Postgresql continue d'enregistrer toutes les requêtes qui correspondent à log_statement valeur, indépendamment de log_min_duration_statement valeur.

Réglage log_statement à none a semblé arrêter la journalisation.

Y a-t-il quelque chose que j'ai manqué dans la configuration?

15
FallenAngel

Tu étais proche. Votre dernière idée est en fait la voie à suivre:

log_statement = none
log_min_duration_statement = 10000

Ensuite, aucune instruction ne sera enregistrée, sauf celles qui durent plus de 10 secondes - y compris la chaîne de requête elle-même. L'enregistrement peut avoir semblé s'arrêter car 10 secondes est un seuil élevé. J'utilise 2 secondes normalement, mais YMMV.

Cette réponse connexe sur SO a plus:
Impossible de faire fonctionner log_min_duration_statement

21
Erwin Brandstetter