Home > 系统管理, 语言编程 > PostgreSql查询正在执行的SQL和查询执行耗时的SQL

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

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

–查询正在执行的SQL

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

–结束正在进行的R查询

1
select pg_cancel_backend(pid);

–结束正在执行CUD操作

1
select  pg_terminate_backend(pid)

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

1
2
3
create extension pg_stat_statements;
select pg_stat_reset();
select pg_stat_statements_reset();

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

1
select * from pg_stat_statements order by total_time desc limit 5;

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

1
select * from pg_stat_statements order by shared_blks_hit+shared_blks_read desc limit 5;
Categories: 系统管理, 语言编程 Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.