Greg Stark wrote:
> Florian G. Pflug wrote:
>> The same holds true for index scans, though. Maybe we can find a
>> solution that benefits both cases - something along the line of a
>> bgreader process
> I posted a patch to do readahead for bitmap index scans using
> posix_fadvise. Experiments showed it works great on raid arrays on
> Linux. Solaris will need to use libaio though which I haven't tried
> yet.
Cool! I'd like to try it out - is that patch available in the pg-patches
archives?
> Doing it for normal index scans is much much harder. You can
> readahead a single page by using the next pointer if it looks like
> you'll need it. But I don't see a convenient way to get more than
> that.
I was thinking that after reading a page from the index, the backend
could post a list of heap pages referenced from that index page to the
shmem. A background process would repeatedly scan that list, and load
those pages into the buffer cache.
regards, Florian Pflug