banner
李大仁博客

李大仁博客

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

PostgreSqlの実行中のSQLと実行時間のかかるSQLのクエリを検索する

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;

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。