最近 PostgreSQL でシステム運用をしていて便利だったのが postgresql.conf
にある log_min_duration_statement という設定。
実行時間がこれに設定したミリ秒を超えるクエリはログファイルに吐き出されるようになる。
以下のように設定すると100ミリ秒を超えるクエリがログ対象となる。
log_min_duration_statement = 100
ログファイルのデフォルトの場所はディストリビューション毎に違うようだ。Debian系は /var/log/postgresql
に、RedHat系はデータフォルダ以下にある感じがする。
ちなみに、 auto_explain という追加モジュールもあって、こっちを使うと EXPLAIN した結果も一緒にログに記録してくれるらしい。