PostgreSql查詢正在執行的SQL和查詢執行耗時的SQL
執行在 ofollow,noindex">AWS RDS上的PostgreSql今天TransactionID耗盡,原因是有一個 SQL 執行佔用CPU超過12小時
–查詢正在執行的 SQL
select * from pg_stat_activity where datname='schema名稱';
–結束正在進行的R查詢
select pg_cancel_backend(pid);
–結束正在執行CUD操作
selectpg_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;