Logging Difficult Queries/ja
From PostgreSQL wiki
Jump to navigationJump to searchシステムにおいてもっとも長い時間がかかる問い合わせを見つけたければ、log_min_duration_statementを正数に設定することで実現可能です。PostgreSQL 8.4から、この目的のためにpg_stat_statementsを使用することもできます。これは他のユーティリティを必要としません。
指定時間(ミリ秒単位)で終わらなかった問い合わせがログに残ります。
このデータを通して分類を補助することができるツールがいくつか存在します。
- pgFouine. この文書にはlog_min_duration_statementや関連するログに関するパラメータについてのティップスが多く記載されています。
- PQA
- EPQA
- pgsi - introduction参照
これらのツールを使用するのであれば、最小時間を0にする、つまりすべての文を記録する期間を検討することすらできます。 これは記録という観点では激しいものですが、これらのツールの1つでデータを実行することで、サーバが何を行っているかについて詳しく洞察することができます。
問い合わせを数秒休止させてしまう可能性があるものの一つはチェックポイントです。 周期的に多くの問い合わせがすべて数秒かかり、ほぼ同じ時間に完了するようであれば、Logging Checkpointsを検討し、これらの時間がそろっているかどうか確認してください。また該当する場合は適切に調整してください。、
auto-explain
PostgreSQLでは、Auto-Explain contribモジュールにより、ある時間閾値を超える問い合わせのみに対してexplainした結果を保存することができます。悪い計画を確認することは、単に低速というだけではなく、低速な問い合わせの原因を判定する手助けとなります。例としてWaiting for 8.4 - auto-explainを参照してください。