美文网首页开源PostgreSQL
postgresql开启慢查询日志

postgresql开启慢查询日志

作者: 清远_03d9 | 来源:发表于2020-01-03 12:48 被阅读0次

    一般的错误跟踪,只需在配置文件 【postgresql.conf】简单设置几个参数,当然还有错误级别等要设置。

    logging_collector = on
    log_destination = 'stderr'
    log_directory = 'log'
    log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
    

    其他几个重要参数说明:

    log_rotation_age = 1440             #minute,多长时间创建新的文件记录日志。0 表示禁扩展。
    log_rotation_size = 10240           #kb,文件多大后创建新的文件记录日志。0 表示禁扩展。
    log_truncate_on_rotation = on       #可重用同名日志文件
    

    当需要跟踪SQL语句或者慢语句,得需要设置以下参数:

    log_statement = all  #需设置跟踪所有语句,否则只能跟踪出错信息,设置跟踪的语句类型,有4种类型:none(默认), ddl, mod, all。跟踪所有语句时可设置为 "all"。
    log_min_duration_statement = 5000   #milliseconds,记录执行5秒及以上的语句,跟踪慢查询语句,单位为毫秒。如设置 5000,表示日志将记录执行5秒以上的SQL语句
    

    然后加载配置:

    postgres=# select pg_reload_conf()
    postgres=# show log_min_duration_statement;
     log_min_duration_statement
    

    可以针对某个用户或者某数据库进行设置

    postgres=# alter database test set log_min_duration_statement=5000;
    

    然后在参数log_directory 指定的目录中查看日志。

    sql查看满语句

    例如查询执行时间超过1秒的SQL  
    
    select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '1 s' order by query_start ; 
    
    postgres=# select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '1 s' order by query_start;
    

    相关文章

      网友评论

        本文标题:postgresql开启慢查询日志

        本文链接:https://www.haomeiwen.com/subject/uaoooctx.html