PostgreSQLで遅いSQLを見つける

PostgreSQL 8.4以降の場合は統計情報ビューを使って遅いSQL文の特定が可能

SQL の実行回数や実行時間などの統計情報を収集するモジュール「pg_stat_statements」を使用する

この機能は contrib モジュールとして提供されているため「share/contrib/pg_stat_statements.sql」を実行して

別途インストールが必要となる

postgresql.confに下記の設定も必要となる
shared_preload_libraries = ‘pg_stat_statements’
custom_variable_classes = ‘pg_stat_statements’
log_min_duration_statement = 3,000
※log_min_duration_statementパラメータで指定の時間を超えたSQLがあった場合に、
実行時間とログを記録する。上記例では3,000=3秒に設定している。
まず3秒くらいにしてみてログをチェックしてこれでログが出なくなるようにSQLを改善し、
スローSQLログが出なくなったら、パラメータを2秒、1秒と、徐々に設定して1秒でログが
出なくなれば、パフォーマンスも改善していくはず。

 「pg_stat_statementsビュー」
userid:SQL文を実行したユーザのOID
dbid:SQL文が実行されたデータベースのOID
query:代表的な文の文字列
calls:実行回数
total_time:SQL文の処理に費やした総時間(ミリ秒単位)
rows:SQL文によって取得された、あるいは影響を受けた行の総数
蓄積された情報を一旦リセットしたい場合は下記でリセットできる。
SELECT pg_stat_statements_reset();

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です