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?


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.