PostgreSQLで、SQLパフォーマンスを解析するために、SQLのトレース取得を試みたが、その手段がなかなか見つけられず、苦労した。
Oracleのように、動的に指定するのではなく、起動パラメタとして指定し、出力はログファイルにテキスト形式で出てくるようだ。
以下の「JPUG広報担当blog」に手順の紹介を見つけた。
上記記事の中では、postgresql.confファイルのオプション指定で、
log_duration = true
log_statement = true
の2行を設定する方法が示されているが、この記事にakio_piscesさんがコメントされているように、上記の設定をする代わりに
log_min_duration_statement = 0
と設定するほうが、ログが1行に表示されて見やすい。
postgresql.confの設定が終わったら、バックエンドを再起動する。
※再起動時には、pg_ctlの-lオプションで出力するログファイルを指定する。
pg_ctl -l /tmp/pg.log -D /tmp/pg startすると、/tmp/pg.log というファイルに実行されたSQL文とそのSQL文の実行時間などが表示される。
Oracleのように、動的に指定するのではなく、起動パラメタとして指定し、出力はログファイルにテキスト形式で出てくるようだ。
以下の「JPUG広報担当blog」に手順の紹介を見つけた。
上記記事の中では、postgresql.confファイルのオプション指定で、
log_duration = true
log_statement = true
の2行を設定する方法が示されているが、この記事にakio_piscesさんがコメントされているように、上記の設定をする代わりに
log_min_duration_statement = 0
と設定するほうが、ログが1行に表示されて見やすい。
postgresql.confの設定が終わったら、バックエンドを再起動する。
※再起動時には、pg_ctlの-lオプションで出力するログファイルを指定する。
pg_ctl -l /tmp/pg.log -D /tmp/pg startすると、/tmp/pg.log というファイルに実行されたSQL文とそのSQL文の実行時間などが表示される。