How difficult would it be to make the combination

   log_statement = all
   log_duration = true

just put the duration on the same line as the statement? Then
log_min_duration_statement could be used to 
do the desired log-at-threshold behavior, which certainly seems
valuable. You'd need a way to visually/scriptually (?) distinguish those
log records, though, I guess.

Note that my original post on this was more of a question than an
objection - it's entirely possible to sed around having duration and
statement on separate lines - I just wanted clarification. Having them
on the same line IS handy, however....

- DAP

>-----Original Message-----
>From: Bruce Momjian [mailto:[EMAIL PROTECTED] 
>Sent: Wednesday, December 01, 2004 11:18 AM
>To: Simon Riggs
>Cc: David Parker; [EMAIL PROTECTED]
>Subject: Re: [HACKERS] Increasing the length of
>
>Simon Riggs wrote:
>> On Tue, 2004-11-30 at 19:32, Bruce Momjian wrote:
>> > David Parker wrote:
>> > > I've been using "log_min_duration_statement = 0" to get 
>durations 
>> > > on all SQL statements for the purposes of performance tuning, 
>> > > because this logs the duration on the same line as the 
>statement. 
>> > > My reading of this TODO is that now 
>log_min_duration_statement = 0 
>> > > would give me the statements but no total duration?
>> > 
>> > Oh, sorry, you are right.  I forgot about the duration 
>part!  I got 
>> > so excited I forgot.
>> > 
>> > TODO item removed.
>> 
>> David's objection was noted, and why I hadn't coded it (yet).
>> 
>> There are currently two ways of getting statement and 
>duration output, 
>> which is confusing....
>> 
>> You can either
>> 1. Individual statements
>> - log_statement = all
>> - log_duration = true
>> - log_line_prefix includes processid
>> 
>> which produces 2 log lines like
>> statement: xxxxxxxxx
>> duration: yyyyyyyyyy
>> 
>> 2. log_min_duration
>> log_min_duration_statement=0
>> which produces 1 log line like
>> duration: yyyyyyy statement: xxxxxxxxxx
>> 
>> These two things do exactly the same thing, apart from the way the 
>> output is presented to the user in the log line.
>> 
>> I'd like to change log_min_duration_statement as suggested, but this 
>> side-effect behaviour of being a better log_statement than 
>> log_statement kindof gets in the way. It makes me wonder why we have 
>> log_statement at all.
>
>We have it so you can look in the log to see currently running 
>queries rather than just completed queries.
>
>> We all want to do performance tracing. I'd also like to be able to 
>> dynamically monitor what is actually happening *now* on the system.
>> There is no way right now to monitor for rogue queries, 
>other than to 
>> cancel anything that runs more than statement_timeout. Thats 
>not good 
>> either, even if it does keep the current behaviour.
>> 
>> My preference would be to do the following:
>> - add a script to contrib to process the log file
>> - always add processid to log_statement_prefix when both 
>log_statement 
>> and log_duration are specified, so you can always tie up the data
>
>I think our setup is confusing enough.  Adding "automatic" 
>additions seems even more confusing than what we have now.  We 
>could throw a log warning message somehow though.
>
>-- 
>  Bruce Momjian                        |  http://candle.pha.pa.us
>  [EMAIL PROTECTED]               |  (610) 359-1001
>  +  If your life is a hard drive,     |  13 Roberts Road
>  +  Christ can be your backup.        |  Newtown Square, 
>Pennsylvania 19073
>

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to