Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Duration logged but not the statement -- postgresql. Are there any specific queries for this behavior?

I have the following setting in my postgresql.conf

log_statement='all'
log_duration=on

When I run psql, and run any query like select/create user/ etc, it logs the statement as well as the duration. If I give the query to connect to a different database

\c <database_name>

it logs neither the duration nor the statement. I thought it might not log duration and statement for meta-commands that starts with a backslash. But it does log the statement and duration for some of them, like \dt \l.

I think there might be a list of queries/commands, for which log will be generated or not. is there any such list?

Having said that, the original issue, that led me to dig this is --

My application (golang-react application) interacts with postgresql and logs statement and its duration. But after that it logs two more durations, whose statement is not printed. (I have commented log_min_duration_statement), so I'm not sure what queries, this duration is for. Also if I do SELECT query,xact_start,query_start FROM pg_stat_activity; at that time to see the running queries,it does not show any other query than the one which I see in the logs.

How can I know which queries is this duration for?

like image 974
inquisitive Avatar asked Oct 27 '25 17:10

inquisitive


1 Answers

But after that it logs two more durations, whose statement is not printed.

These are probably the parse, bind and execute durations for the three phases of statement execution, if you have log_duration = on. It's only done in three phases via client applications - psql runs in a single go.

If you just want the total, use log_min_duration_statement = 0 instead.

Yes, that's confusing. Maybe it's worth writing it up and submitting it as a usability problem report to pgsql-general.

like image 121
Craig Ringer Avatar answered Oct 29 '25 07:10

Craig Ringer