AWS RDS で実行されている PostgreSql の TransactionID が今日枯渇しました。原因は、CPU を 12 時間以上占有する SQL の実行です。
-- 実行中の SQL をクエリする
select * from pg_stat_activity where datname=' スキーマ名 ';
-- 実行中の R クエリをキャンセルする
select pg_cancel_backend(pid);
-- 実行中の CUD 操作を終了する
select pg_terminate_backend(pid);
どの 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. バッファの使用回数が最も多い SQL をクエリする
select * from pg_stat_statements order by shared_blks_hit+shared_blks_read desc limit 5;