李大仁博客

PostgreSql查询正在执行的SQL和查询执行耗时的SQL

运行在AWS RDS上的PostgreSql今天TransactionID耗尽,原因是有一个SQL执行占用CPU超过12小时

–查询正在执行的SQL

select * from pg_stat_activity where datname='schema名称';

–结束正在进行的R查询

select pg_cancel_backend(pid);

–结束正在执行CUD操作

select  pg_terminate_backend(pid);

如何找到那些SQL执行时间长的SQL?
STEP1.开启pg_stat_statements 拓展,
此处需要PostgreSql支持,部分版本需要编译安装。

create extension pg_stat_statements;
select pg_stat_reset();
select pg_stat_statements_reset();

STEP2.等待一段时间
STEP3.查询最耗时的SQL

select * from pg_stat_statements order by total_time desc limit 5;

STEP4.查询使用Buffer次数最多的SQL

select * from pg_stat_statements order by shared_blks_hit+shared_blks_read desc limit 5;
Exit mobile version