Le paramètre log_min_duration_statement est ignoré

15

je cours Postgresql 9.1 sur Ubuntu. La version exacte de Postgresql est 9.1+129ubuntu1comme 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 le /etc/postgresql/9.1/main/postgresql.conffichier

log_min_duration_statement = 10000
log_statement = 'mod'

Postgresql enregistrera donc les requêtes qui durent plus de 10 secondes.

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

log_min_duration_statement = 100000

Mais Postgresql continue de consigner chaque requête qui correspond à la log_statementvaleur, quelle que soit la log_min_duration_statementvaleur.

Réglage log_statement de nonesemble arrêter la journalisation.

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

Ange déchu
la source
Le fait est que vous enregistrez l'union des deux ensembles, pas l'intersection de celui-ci. Je ne sais pas si cela peut être fait comme vous le souhaitez.
dezso
Alors, dois-je désactiver (commenter) log_statementet log_min_duration_statementdevrait donc fonctionner?
FallenAngel
Si vous voulez simplement avoir toutes les commandes en cours d' exécution à long (que ce soit un SELECT, UPDATEou un LDD), alors oui.
dezso

Réponses:

21

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

Erwin Brandstetter
la source
3
Permettez-moi d'ajouter que la valeur par défaut de log_statementest none, donc ne pas la définir ou la définir sur nonea le même effet.
dezso