banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

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;

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.