MySQLだとスロークエリのログを出してスクリプトを走らせる形でしたが、
こちらは便利なものがありました。
postgresの設定ファイル(data/postgresql.conf)を変更します。
shared_preload_libraries = 'pg_stat_statements' custom_variable_classes = 'pg_stat_statements' pg_stat_statements.max = 4000 pg_stat_statements.track = 'top' track_activity_query_size = 2048
postgresを立ち上げ目的のDBに対して以下のSQLを実行します。
psql -U postgres -d {db} -f share/contrib/pg_stat_statements.sql
アプリケーションをいじったあとに以下のSQLでボトルネックを表示できます。
SELECT query, calls, total_time, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 3;
一旦収集データを消すには以下です。
SELECT pg_stat_statements_reset();