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

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;
Categories: 系统管理, 语言编程 Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.