ryhmrt’s blog

フィリピンから日本に戻った意識低い系プログラマの雑記

PostgreSQLのスロークエリ追跡

最近 PostgreSQL でシステム運用をしていて便利だったのが postgresql.conf にある log_min_duration_statement という設定。

実行時間がこれに設定したミリ秒を超えるクエリはログファイルに吐き出されるようになる。

以下のように設定すると100ミリ秒を超えるクエリがログ対象となる。

log_min_duration_statement = 100

ログファイルのデフォルトの場所はディストリビューション毎に違うようだ。Debian系は /var/log/postgresql に、RedHat系はデータフォルダ以下にある感じがする。

ちなみに、 auto_explain という追加モジュールもあって、こっちを使うと EXPLAIN した結果も一緒にログに記録してくれるらしい。