2011-11-21 10 views
32

私は自分のコンピュータにPostgreSQL DBを持っており、その上でクエリを実行するアプリケーションを持っています。PostgreSQLどのクエリが実行されたかを確認する方法

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

私はLinuxコンピュータとpgadminを使用しています。サーバログに

+0

アプリケーションの外観やデータベースへのアクセス方法についての詳細は? –

答えて

39

入れます:

log_statement = all 

これは、データベース・サーバーへのすべての呼び出しを記録します。

私は生産的なサーバでlog_statement = allを使用しません。巨大なログファイルを生成します。
The manual about logging-parameters:

log_statementenum)SQL文がログに記録されている

を制御します。有効な値はnone(オフ)、ddlmod、およびall(すべてのステートメント)です。 [...] log_statementパラメータをリセット

は、サーバのリロード(SIGHUP)が必要です。再起動はではなく、が必要です。 the manual on how to set parametersを読んでください。

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

ファイルへのアクセス権がある場合(リモートサーバではそうでない場合があります)、pgAdminのサーバログファイルを見て、正しく設定することもできます。見てください:Tools -> Server statusmanual for pgAdmin IIIのサーバーステータスウィンドウについて詳しくは、こちらをご覧ください。

サーバーログファイルをvim(または選択したエディタ/リーダー)で読むことをお勧めします。

ログは、インストールフォルダ/データ/ pg_logフォルダに格納されている伐採技術に関連したとき

+0

Brandstetter私はログを見て、それをオフにします。 log_statement = allを作るだけで十分ですか?私はパッケージのインストールについて何か質問したが、サーバのステータスを開いたが、ウィンドウを開いて次のように書き込んだ。ログはこのサーバでは利用できない。私はpostgresqlを再起動すべきですか? – kamaci

+2

@kamaci:私は追加情報で私の答えを修正しました。私が提供したリンクをたどってください。 –

30

PostgreSQLは非常に進んでいます。ログ設定はpostgresql.confファイルに格納されます。

ログ形式は通常stderrに設定されます。しかし、CSVログ形式を推奨します。すべてのクエリをログに記録するために

  • LOG_DESTINATION = '標準エラー出力、csvlog'
  • logging_collectorでCSV形式の変更を=有効にするためには、新規インストールのために非常に便利な、分を設定します。クエリ

    • log_min_duration_statement = 0

    の実行時間は、データベースにアクティブなクエリを表示するには、特定のをログに記録するにはをpg_stat_activity

FROM

  • SELECT *を使用するために、クエリセットのクエリタイプ

    • log_statement MOD = 'すべて' #なし、DDL、すべて

    これは、ログの詳細については良いリンクが照会され

2

私がログを見つけましたbrewのMacインストールの/usr/local/var/log/postgres.logにあるファイル。

関連する問題