zoukankan      html  css  js  c++  java
  • PostgreSQL 慢查询SQL跟踪

    PostgreSQL 开启慢SQL捕获在排查问题时是个很有效的手段。根据慢SQL让我在工作中真正解决了实际问题,很有帮助。

    PostgreSQL 日志支持的输出格式有 stderr(默认)、csvlog 、syslog

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

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

    SELECT
    name,
    setting,
    vartype,
    boot_val,
    reset_val
    FROM pg_settings where name in('logging_collector','log_destination','log_directory','log_filename');

    默认的跟踪日志记录在 pgdate/log 中,如 /usr/local/pgsql/data/log 。
    其他几个重要参数说明:

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

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

    log_statement = all    #需设置跟踪所有语句,否则只能跟踪出错信息
    log_min_duration_statement = 5000    #milliseconds,记录执行5秒及以上的语句

    log_statement:
    设置跟踪的语句类型,有4种类型:none(默认), ddl, mod, all。跟踪所有语句时可设置为 "all"。

    log_min_duration_statement:
    跟踪慢查询语句,单位为毫秒。如设置 5000,表示日志将记录执行5秒以上的SQL语句。

    当 log_statement=all 和 log_min_duration_statement 同时设置时,将跟踪所有语句,忽略log_min_duration_statement 设置。所以需按情况设置其中一个或两个值。

    加载配置

    select pg_reload_conf();
    
    show log_min_duration_statement;

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

     alter database test set log_min_duration_statement=5000;

    捕获正在查询的慢SQL

    select * from pg_stat_activity where state<>'idle' and now()-query_start > interval '5 s' order by query_start ; 
  • 相关阅读:
    20179311《网络攻防实践》第八周作业
    20179311《网络攻防实践》第七周作业
    20179311《网络攻防实践》第六周作业
    20179311《网络攻防实践》第五周作业
    20179311《网络攻防实践》第四周作业
    20179311《网络攻防实践》第三周作业
    20179311《网络攻防实践》第二周作业
    python的 Function Annotations学习笔记
    测试如何快速了解一个产品、需求、任务(海盗派测试分析)
    基于Jmeter和Jenkins搭建性能测试框架
  • 原文地址:https://www.cnblogs.com/VicLiu/p/12017704.html
Copyright © 2011-2022 走看看