On Tue, 2012-06-12 at 22:06 -0400, Robert Haas wrote:
> > How much of a savings did we get from PD_ALL_VISIBLE when it was added
> > into the page-at-a-time visibility check?
> >
> > >From 608195a3a3656145a7eec7a47d903bc684011d73:
> >
> > "In addition to the visibility map, there's a new PD_ALL_VISIBLE flag on
> > each heap page, also indicating that all tuples on the page are visible
> > to all transactions. It's important that this flag is kept up-to-date.
> > It is also used to skip visibility tests in sequential scans, which
> > gives a small performance gain on seqscans."
> >
> > If "small" means that it's something we can give up, then focusing on
> > HEAP_XMIN_COMMITTED makes sense. But if we can't give it up, then we
> > need to take it into account in the proposal.
>
> It's significant.
In that case, the proposals that only involve HEAP_XMIN_COMMITTED don't
seem viable to me. To get maxiumum read speed, we will need to set
PD_ALL_VISIBLE also, and that means rewriting the entire table anyway
(for the workload that I'm describing).
However, maybe if we combine the approaches, readers could ignore
PD_ALL_VISIBLE during the load, which looks like maybe a 10% penalty,
without having to ignore HEAP_XMIN_COMMITTED (which seems much more
costly to ignore).
Regards,Jeff Davis