15

1日に実行される各クエリの実行時間を記録したい。

たとえば、このように、

2012-10-01 13:23:38 STATEMENT: SELECT * FROM pg_stat_database  runtime:265 ms.

ガイドラインを教えてください。

4

3 に答える 3

36

設定した場合

log_min_duration_statement = 0
log_statement = all 

postgresql.conf で、すべてのステートメントが Postgres ログファイルに記録されていることを確認できます。

有効にすると

log_duration

また、各ステートメントにかかった時間も出力されます。デフォルトではオフになっています。

log_statementパラメーターを使用して、ログに記録するステートメントのタイプ(DDL、DML など) を制御できます。

これにより、ログファイルに次のような出力が生成されます。

2012-10-01 13:00:43 CEST postgres ログ: ステートメント: pg_class からカウント (*) を選択します。
2012-10-01 13:00:43 CEST postgres ログ: 期間: 47.000 ミリ秒

マニュアルの詳細:

毎日のリストが必要な場合は、ログファイルを毎日ローテーションするように構成することをお勧めします。繰り返しますが、これはマニュアルに記載されています。

于 2012-10-01T09:42:33.930 に答える
5

OPは実際にはタイムスタンプではなく実行期間を要求していたと思います。

ログ出力に期間を含めるには、 を開きpgsql/<version>/data/postgresql.conf、次の行を見つけます。

#log_duration = off

そしてそれをに変更します

log_duration = on

指定されたパラメータが見つからない場合は、ファイルの新しい行に追加してください。

変更を保存したら、postgresql サービスを再起動するか、単に呼び出します

pg_ctl reload -D <path to the directory of postgresql.conf>

例えば

pg_ctl reload -D /var/lib/pgsql/9.2/data/

設定をリロードします。

于 2014-06-20T11:40:34.593 に答える