2012-06-29 5 views
2

Я использую журнал (log_min_duration_statement = 200) для анализа некоторых медленных запросов в PostgreSQL 9.0, но инструкции для наихудших запросов не регистрируются. Есть ли способ узнать, что такое запросы?Почему длинные запросы пустые в журнале postgresql?

(некоторые значения заменяются *** для краткости и конфиденциальности.)

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 *** 
... 
+2

О, дорогой, какой дурак. Получается, потому что я следил за журналами с помощью 'tail -f path ' grep 'duration. + ms'' любое утверждение, начинающееся с новой строки, не было видно. * Facepalm * – Jake

+1

Вы можете ответить на свой вопрос и принять этот ответ. Таким образом, другие люди будут знать, что эта проблема решена. –

ответ

0

Получается, потому что я следил за журналами с tail -f path | grep 'duration .+ ms'. Любое утверждение, начинающееся с символа новой строки, не было видно. В основном я делал это, чтобы выделить строку продолжительности.

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.