Can I log query execution time in PostgreSQL 8.4?

前端 未结 3 1486
刺人心
刺人心 2020-12-31 08:32

I want to log each query execution time which is run in a day.

For example like this,

2012-10-01 13:23:38 STATEMENT: SELECT * FROM pg_stat_database           


        
相关标签:
3条回答
  • 2020-12-31 09:00

    If you set

    log_min_duration_statement = 0
    log_statement = all 
    

    in your postgresql.conf, then you will see all statements being logged into the Postgres logfile.

    If you enable

    log_duration
    

    that will also print the time taken for each statement. This is off by default.

    Using the log_statement parameter you can control which type of statement you want to log (DDL, DML, ...)

    This will produce an output like this in the logfile:

    2012-10-01 13:00:43 CEST postgres LOG:  statement: select count(*) from pg_class;
    2012-10-01 13:00:43 CEST postgres LOG:  duration: 47.000 ms
    

    More details in the manual:

    • http://www.postgresql.org/docs/8.4/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHEN
    • http://www.postgresql.org/docs/8.4/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHAT

    If you want a daily list, you probably want to configure the logfile to rotate on a daily basis. Again this is described in the manual.

    0 讨论(0)
  • 2020-12-31 09:04

    I think a better option is to enable pg_stat_statements by enabling the PG stats extension. This will help you to find the query execution time for each query nicely recorded in a view

    0 讨论(0)
  • 2020-12-31 09:10

    I believe OP was actually asking for execution duration, not the timestamp.

    To include the duration in the log output, open pgsql/<version>/data/postgresql.conf, find the line that reads

    #log_duration = off
    

    and change it to

    log_duration = on
    

    If you can't find the given parameter, just add it in a new line in the file.

    After saving the changes, restart the postgresql service, or just invoke

    pg_ctl reload -D <path to the directory of postgresql.conf>
    

    e.g.

    pg_ctl reload -D /var/lib/pgsql/9.2/data/
    

    to reload the configuration.

    0 讨论(0)
提交回复
热议问题