web-dev-qa-db-ja.com

PostgreSQLどのクエリが実行されたかを確認する方法

コンピューターにPostgreSQL DBがあり、クエリを実行するアプリケーションがあります。

DBで実行されているクエリを確認するにはどうすればよいですか?

Linuxコンピューターとpgadminを使用しています。

45
kamaci

サーバーログをオンにします。

log_statement = all

これにより、データベースサーバーへのすべての呼び出しがログに記録されます。

実動サーバーではlog_statement = allを使用しません。巨大なログファイルを生成します。
ロギングパラメータに関するマニュアル:

log_statementenum

どのSQLステートメントを記録するかを制御します。有効な値は、none(オフ)、ddlmod、およびall(すべてのステートメント)です。 [...]

log_statementパラメーターをリセットするには、サーバーのリロード(SIGHUP)が必要です。再起動はnot必要です。 パラメータの設定方法に関するマニュアル を読んでください。

サーバーログとpgAdminのログを混同しないでください。 2つの異なるもの!

ファイルにアクセスできる場合(リモートサーバーの場合はそうではないかもしれません)、pgAdminでサーバーログファイルを調べて、正しくセットアップすることもできます。 Tools -> Server statusをご覧ください。サーバーステータスウィンドウの詳細については、 pgAdmin IIIのマニュアル をご覧ください。

vim(または選択したエディター/リーダー)を使用してサーバーログファイルを読み取ることを好みます。

51

ロギング技術に関連する場合、PostgreSqlは非常に高度です。

ログはInstallationfolder/data/pg_log folderに保存されます。ログ設定はpostgresql.confファイルに配置されます。

ログ形式は通常stderrとして設定されます。ただし、CSVログ形式をお勧めします。 CSV形式の変更を有効にするには

log_destination = 'stderr,csvlog'   
logging_collector = on

すべてのクエリをログに記録するには、新規インストールに非常に便利です。クエリの実行時間

log_min_duration_statement = 0

データベースでアクティブなクエリを表示するには、次を使用します

SELECT * FROM pg_stat_activity

特定のクエリを記録するには、クエリタイプを設定します

log_statement = 'all'           # none, ddl, mod, all

クエリのロギングの詳細については、 PostgreSql Log を参照してください。

45
arvind

BrewからのMacインストールで、/ usr/local/var/log/postgres.logにログファイルが見つかりました。

4
Michael

Djangoをpostgres 10.6で使用している間、ログはデフォルトで有効になっており、次のことが簡単にできました。

tail -f /var/log/postgresql/*

Ubuntu 18.04、Django 2 +、python3 +

0
jmunsch

このログディレクトリ名でログ設定がpostgresql.confで有効になっているかどうかは、pg_logフォルダーで確認できます。

0
s21s