Debugging slow PostgreSQL queries

Ellie Huxtable

遅い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です。利用可能な設定項目を一覧しやすく、再起動が必要な項目もわかりやすく表示してくれます。

原文は Ellie Huxtable により に公開されました。

この記事は「gpt-5.6-terra」を使用して翻訳されました。