zoukankan      html  css  js  c++  java
  • pg_blocking pg_monitor (转) postgresql表死锁问题的排查方式 阻塞分析 慢SQL

    -1.  pg_blocking # 找出精确时间段阻塞的SQL## 在navicat执行,复制结果,第一个就是最开始出现阻塞的SQL

    select  * from pg_blocking  where d_time >'2022-01-26 07:50:02+08'  and d_time < '2022-01-26 07:53:02+08' ;    
    select --*
    pg_terminate_backend(pid)
    From pg_stat_activity where query_start<=now()- interval'10 sec' and state not in ('idle') 
    and pid<>pg_backend_pid() and query ilike 'select%'
    order by query_start
    ;

    0. pg_monitor # 查出这段时间超过10秒的SQL

    ---- 查出这段时间超过10秒的SQL
    SELECT ts, datname, usename, query, COUNT (
    *) FROM pg_monitor WHERE ts >= '2022-01-26 07:50:00' AND ts <= '2022-01-26 07:53:00' AND query NOT LIKE '%autovacuum%' GROUP BY datname, usename, query, ts ORDER BY COUNT (*) DESC;

    ----查询top 耗时
    SELECT
            *, mean / 1000 AS "单次平均时间(秒)"
    FROM
            pg_top_day
    WHERE
            ts >= '2021-06-09 08:00:00'
    AND ts <= '2021-06-09 22:00:00'
    ORDER BY
            percent DESC;

    1.查询激活的执行中的sql,查看有哪些更新update的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;



    select *from pg_stat_activity where pid<>pg_backend_pid() and state not in ('idle');

    select
    * from pg_stat_activity where state = 'active';

    2. 查询表中存在的锁

    select a.locktype, a.database, a.pid, a.mode, a.relation, b.relname
    from pg_locks a
    join pg_class b on a.relation = b.oid
    where lower(b.relname) = 'h5_game';

    3. 杀掉死锁进程

    select pg_terminate_backend(pid)
    from pg_stat_activity
    where state = 'active'
    and pid != pg_backend_pid()
    --and pid = 14172
    and pid in (select a.pid
    from pg_locks a
    join pg_class b on a.relation = b.oid
    where lower(b.relname) = 'news_content')

    参考: postgresql表死锁问题的排查方式 - PostgreSQL - 服务器之家 (zzvips.com)

    4.  看cpu指标  iowait  top  --  你看看io有降下来么  去数据库服务器看

     

     

    ps -ef|grep postgres|grep -I wait

    iotop              ---------------------------      看一下哪个进程比较耗费io

    表膨胀

    数据量大

    VACUUM full bi_dws_kpi_agency      --   VACUUM full 表名

     vacuum full(阻塞读写)  

    用一个例子来演示会更加清晰
  • 相关阅读:
    致命错误 RC1004: 文件查找结束时有无法预知的错误(vc++)
    demo713总结
    图标,鼠标,字符串,音频..
    不同的色深条件(8、16、24、32),像素绘制方式
    SQL 保留两位小数的实现方式
    MVC4的REmote缺陷
    MVC4安装过程
    mongodb 的几种驱动
    iis7 web配置问题及解决办法
    Fast Binary File Reading with C#
  • 原文地址:https://www.cnblogs.com/hixiaowei/p/15620762.html
Copyright © 2011-2022 走看看