Luke Lonergan wrote:
>> What do you mean with using readahead inside the heapscan?
>> Starting an async read request?
>
> Nope - just reading N buffers ahead for seqscans. Subsequent calls use
> previously read pages. The objective is to issue contiguous reads to
> the OS in sizes greater than the PG page size (which is much smaller
> than what is needed for fast sequential I/O).
Are you filling multiple buffers in the buffer cache with a single
read-call? The OS should be doing readahead for us anyway, so I don't
see how just issuing multiple ReadBuffers one after each other helps.
> Yes, I think the ring buffer strategy should be used when the table size
> is > 1 x bufcache and the ring buffer should be of a fixed size smaller
> than L2 cache (32KB - 128KB seems to work well).
I think we want to let the ring grow larger than that for updating
transactions and vacuums, though, to avoid the WAL flush problem.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com