pg_stat_statements の使い方
重い SQL を探す
書き方
ALTER SYSTEM SET shared_preload_libraries = 'pg_stat_statements';(再起動が要る) CREATE EXTENSION pg_stat_statements; SELECT query, calls, total_exec_time, mean_exec_time FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 5; SELECT pg_stat_statements_reset();
SQL の形(値は $1 に置き換えたもの)ごとに、回数(calls)・合計の時間(total_exec_time)・1 回の平均(mean_exec_time)・読んだブロックなどを集めます。サーバーの起動時に読み込む必要があり(shared_preload_libraries)、データベースに CREATE EXTENSION します。total_exec_time の大きいものから直すと、効き目が大きくなります。
例
SELECT query, calls, round(mean_exec_time::numeric, 2) FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 3;
実際に打って練習する
PostgreSQL DBA コースの Lv47「重い SQL を探す pg_stat_statements」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。