2

ログ ( log_min_duration_statement = 200) を実行して PostgreSQL 9.0 の遅いクエリを分析していますが、最悪のクエリのステートメントがログに記録されていません。クエリが実際に何であるかを知る方法はありますか?

***(簡潔さとプライバシーのために、一部の値は に置き換えられています。)

2012-06-29 02:10:39 UTC LOG:  duration: 266.658 ms  statement: SELECT *** FROM "oauth_accesstoken" WHERE "oauth_accesstoken"."token" = E'***' 
2012-06-29 02:10:40 UTC LOG:  duration: 1797.400 ms  statement: 
2012-06-29 02:10:49 UTC LOG:  duration: 1670.132 ms  statement: 
2012-06-29 02:10:50 UTC LOG:  duration: 354.336 ms  statement: SELECT *** FROM ***
...
4

2 に答える 2

1

以下に示すように、 にはいくつかのログ ファイルの保存先オプションがありpostgresql.confます。を使用することをお勧めしますcsvlog

log_destination = 'csvlog'  
logging_collector = on  
log_directory = '/var/applog/pg_log/1922/'   
log_rotation_age = 1d 
log_rotation_size = 10MB 
log_statement = 'ddl'                   # none, ddl, mod, all
log_min_duration_statement = 200

変更を行った後、ファイルをリロードする必要がありpostgresql.confます。

于 2012-06-29T02:22:03.237 に答える
0

tail -f path | grep 'duration .+ ms'改行で始まるステートメントが表示されていないログを監視していたためです。私は主に期間文字列を強調するためにこれを行っていました。

于 2013-09-30T07:34:09.303 に答える