云数据库 RDS-使用pg_stat_statements插件:进阶使用

时间:2024-03-28 19:27:32

进阶使用

使用pg_stat_statements排查CPU过高问题。

  1. 为了方便排查CPU过高的问题,需要重置pg_stat_statements的计数器。
    select pg_stat_statements_reset();

    等待一段时间,使pg_stat_statements能够统计到足够的信息。

  2. 获取最耗时的SQL。
    select * from pg_stat_statements order by total_exec_time desc limit 10;

    此步骤获取到的SQL会长时间占用用户态CPU时间,把这些SQL取出来分析。

  3. 获取读取Buffer次数最多的SQL。
    select * from pg_stat_statements order by shared_blks_hit + shared_blks_read desc limit 10;

    此步骤获取到的SQL可能由于缺少查询对应的索引,导致过多的buffer读,从而消耗大量CPU。

  4. 获取执行次数最多的SQL。
    select * from pg_stat_statements order by calls desc limit 10;

    有些比较简单的SQL单独执行耗时较低,但是在某些情况下(例如:在事务中循环执行、大量的并发执行)也会导致CPU的消耗增高。

support.huaweicloud.com/usermanual-rds/rds_09_0066.html