Re: Why not try for a HOT update, even when PageIsFull()?

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Pavan Deolasee <pavan.deolasee@gmail.com>
Date: 2021-11-22T00:29:11Z
Lists: pgsql-hackers
On Fri, Nov 19, 2021 at 11:51 AM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
> Hmm, I don't have any memory of introducing this; and if you look at the
> thread, you'll notice that it got there between the first patch I posted
> and the second one, without any mention of the reason.  I probably got
> that code from the WARM patch series at some point, thinking that it was
> an obvious optimization; but I'm fairly certain that we didn't run any
> tailored micro-benchmark to justify it.

I suspected that it was something like that. I agree that it's
unlikely that we'll be able to do another HOT update for as long as
the page has PD_PAGE_FULL set. But that's not saying much; it's also
unlikely that heap_update will find that PD_PAGE_FULL is set to begin
with. And, the chances of successfully applying HOT again are workload
dependent.

> I certainly do not object to removing it.

I'd like to do so soon. I'll wait a few more days, in case Pavan objects.

Thanks
-- 
Peter Geoghegan



Commits

  1. Go back to considering HOT on pages marked full.

  2. Avoid improbable PANIC during heap_update.

  3. Remove tupgone special case from vacuumlazy.c.

  4. Simplify check of modified attributes in heap_update