遅いPostgreSQLクエリのデバッグ
今日、少し前から、ときどきレイテンシーが急増する原因を調べていました。最適化が必要な遅いクエリがあるのではないかと思ったのですが、確認するにはスロークエリのログを有効にする必要がありました。
Postgresで100ミリ秒を超えて実行されたすべてのステートメントをログに記録したい場合は、設定ファイルに次の設定を追加します。
log_min_duration_statement = 100続いて、次のコマンドでPostgresの設定を再読み込みします。
select pg_reload_conf();サーバーの再起動は必要ありません。
そのほか、次の設定も役に立ちます。
# 遅いステートメントだけでなく、すべてのステートメントをログに記録する
# ログが非常に多くなる可能性があるため、ログ用パーティションが
# いっぱいにならないよう注意すること
log_statement = all/ddl/none# ステートメントと一緒に実行時間もログに記録する
log_duration = on以前の仕事では、Postgresのパフォーマンス分析にpganalyzeがとても役立ちました。いくつか追加のセットアップが必要で、無料ではありません。それでも、Postgresに大きく依存しているなら、ぜひおすすめします。
それ以外では、Postgresの設定項目を調べるときのお気に入りのリソースはpostgresqlco.nfです。利用可能な設定項目を一覧しやすく、再起動が必要な項目もわかりやすく表示してくれます。
記事をランダムに読む