Обсуждение: Reporting query duration

Поиск
Список
Период
Сортировка

Reporting query duration

От
Bruce Momjian
Дата:
There is a TODO item:
* Allow logging of query durations

Currently there is no easy way to get a list of query durations in the
server log file.  My idea is to add query duration to the end of the
query string for 'debug_print_query'.  My only problem is that to print
the duration, I would have to print the query _after_ it is executed,
rather than before.  This may make it difficult to look at the server
logs to see what queries are running, plus if the query errors, I have
to still print it, I assume, though actually Gavin's new GUC option will
add printing of error queries, so I may be OK to just print the
successful ones.

I imagine this timing would be used by administrators to find out which
queries where slow.

Comments?

Also, looking at the GUC options:
#debug_print_query = false#debug_print_parse = false#debug_print_rewritten = false#debug_print_plan =
false#debug_pretty_print= false
 

I notice Peter is correct that debug_print_query really is a log_*
option, rather than a debug option.  The others are for server
debugging, while debug_print_query is more of a log queries option. 
Should we rename it and support both log_print_query and
debug_print_query for one release?

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Reporting query duration

От
Tom Lane
Дата:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> There is a TODO item:
>     * Allow logging of query durations

> Currently there is no easy way to get a list of query durations in the
> server log file.  My idea is to add query duration to the end of the
> query string for 'debug_print_query'.  My only problem is that to print
> the duration, I would have to print the query _after_ it is executed,
> rather than before.

Well, that's what makes it a bad idea, eh?

I think the log entries should be separate: print the query text when
you start, print the duration when you're done.  A little bit of
postprocessing can reassemble the two entries.

> Should we rename it and support both log_print_query and
> debug_print_query for one release?

If we're gonna rename config variables, let's just rename them.
People don't try to pipe their old postgresql.conf files into psql,
so I don't think there's a really good argument for supporting old
variable names for a long time.
        regards, tom lane


Re: Reporting query duration

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > There is a TODO item:
> >     * Allow logging of query durations
> 
> > Currently there is no easy way to get a list of query durations in the
> > server log file.  My idea is to add query duration to the end of the
> > query string for 'debug_print_query'.  My only problem is that to print
> > the duration, I would have to print the query _after_ it is executed,
> > rather than before.
> 
> Well, that's what makes it a bad idea, eh?
> 
> I think the log entries should be separate: print the query text when
> you start, print the duration when you're done.  A little bit of
> postprocessing can reassemble the two entries.

How would someone reassemble them?  You would have to have the pid, I
assume.  Do we auto-enable pid output when we enable duration?  Yuck.
Maybe print the pid just for the query and timing lines if pid print
isn't enabled?

I would think printing it out together at the end would work.  We
already have several ways to see running queries.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


Re: Reporting query duration

От
Tom Lane
Дата:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
>> I think the log entries should be separate: print the query text when
>> you start, print the duration when you're done.  A little bit of
>> postprocessing can reassemble the two entries.

> How would someone reassemble them?  You would have to have the pid, I
> assume.

Sure.

> Do we auto-enable pid output when we enable duration?  Yuck.

No, you expect the user to select the options he needs.  Let's not
over-engineer a perfectly simple feature.
        regards, tom lane


Re: Reporting query duration

От
Bruce Momjian
Дата:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> >> I think the log entries should be separate: print the query text when
> >> you start, print the duration when you're done.  A little bit of
> >> postprocessing can reassemble the two entries.
> 
> > How would someone reassemble them?  You would have to have the pid, I
> > assume.
> 
> Sure.
> 
> > Do we auto-enable pid output when we enable duration?  Yuck.
> 
> No, you expect the user to select the options he needs.  Let's not
> over-engineer a perfectly simple feature.

OK, so I will rename debug_print_query to log_print_query, and Gavin's
new print query on error will also be a log_*.

I will add a new GUC variable to print the query duration, and recommend
in the docs that log_pid be enabled at the same time so you can match
the duration with the query.

Originally, I wanted to make the time just print whenever you enabled
print_query, but with them on separate lines, it should be a separate
GUC variable.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073