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;

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。