Re: Synchronized scans - Mailing list pgsql-patches

From Tom Lane
Subject Re: Synchronized scans
Date
Msg-id 28998.1180995933@sss.pgh.pa.us
Whole thread Raw
In response to Re: Synchronized scans  (Jeff Davis <pgsql@j-davis.com>)
Responses Re: Synchronized scans
Re: Synchronized scans
List pgsql-patches
Jeff Davis <pgsql@j-davis.com> writes:
> My thought was that every time the location was reported by a backend,
> it would store 3 pieces of information, not 2:
>  * relfilenode
>  * the PID of the backend that created or updated this particular hint
> last
>  * the location

> Then, on heap_endscan() (if that's the right place), we find the hint,
> and if the PID matches, we remove it. If not, it does nothing.

> This would only matter when there weren't other scans. When concurrent
> scans were happening, chances are the PID wouldn't match anyway, and
> thus not be removed.

But note that barring backend crash, once all the scans are done it is
guaranteed that the hint will be removed --- somebody will be last to
update the hint, and therefore will remove it when they do heap_endscan,
even if others are not quite done.  This is good in the sense that
later-starting backends won't be fooled into starting at what is
guaranteed to be the most pessimal spot, but it's got a downside too,
which is that there will be windows where seqscans are in process but
a newly started scan won't see them.  Maybe that's a killer objection.

When exactly is the hint updated?  I gathered from something Heikki said
that it's set after processing X amount of data, but I think it might be
better to set it *before* processing X amount of data.  That is, the
hint means "I'm going to be scanning at least <threshold> blocks
starting here", not "I have scanned <threshold> blocks ending here",
which seems like the interpretation that's being used at the moment.
What that would mean is that successive "LIMIT 1000" calls would in fact
all start at the same place, barring interference from other backends.

            regards, tom lane

pgsql-patches by date:

Previous
From: Michael Glaesemann
Date:
Subject: Re: Synchronized scans
Next
From: Gregory Stark
Date:
Subject: Re: Synchronized scans