From: | "Simon Riggs" <simon(at)2ndquadrant(dot)com> |
---|---|
To: | "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: ReadyForQuery() |
Date: | 2007-01-04 19:12:00 |
Message-ID: | 1167937921.20749.228.camel@silverbirch.site |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Thu, 2007-01-04 at 13:17 -0500, Tom Lane wrote:
> "Simon Riggs" <simon(at)2ndquadrant(dot)com> writes:
> > Wouldn't it be better to issue ReadyForQuery() and then issue the stat
> > stuff in the gap between processing?
>
> To me, "ready for query" means "ready for query", not "I think I might
> be ready soon". Otherwise you could argue for trying to move the
> message emission much further upstream than that. Another problem is
> that on a lot of kernels, control swaps to the client process the
> instant we issue the send(), and if the client is well-coded control
> will swap back when it send()s us the next query. If we rearrange
> things as you suggest then the state display will become quite
> misleading: it will claim we are still busy when actually the client
> has the result, and it will switch to "idle" *after* we've received
> a new command.
Yeh, guessed there were some good arguments for the way it was.
My thinking was, if the client is local and therefore likely to be fast,
we could check for the reply before we signal stats. That way we could
avoid posting idle altogether when we are very busy (and therefore would
like the extra CPU/path length reduction).
OTOH if the client is on the other end of a network, the duration is
relatively lengthy and we'll easily be able to do things in the proposed
order without a problem.
--
Simon Riggs
EnterpriseDB http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Andrew Dunstan | 2007-01-04 19:15:17 | Re: 8.3 pending patch queue |
Previous Message | markwkm | 2007-01-04 19:08:55 | Re: 8.3 pending patch queue |