Re: Reducing the WAL overhead of freezing in VACUUM by deduplicating per-tuple freeze plans
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Andres Freund <andres@anarazel.de>
Cc: Justin Pryzby <pryzby@telsasoft.com>, pgsql-hackers@lists.postgresql.org
Date: 2023-01-09T22:18:21Z
Lists: pgsql-hackers
On Mon, Jan 9, 2023 at 1:43 PM Andres Freund <andres@anarazel.de> wrote: > ISTM that some of the page level freezing functions are misnamed. In heapam.c > the heap_xlog* routines are for replay, afaict. However > heap_xlog_freeze_plan() is used to WAL log the freeze > plan. heap_xlog_freeze_page() is used to replay that WAL record. Probably your > brain is too used to nbtree/ :). Sometimes I wonder why other people stubbornly insist on not starting every function name with an underscore. :-) > I think s/heap_xlog_freeze/heap_log_freeze/ would mostly do the trick, except > that heap_xlog_new_freeze_plan() doesn't quite fit in the scheme. > The routines then also should be moved a bit up, because right now they're > inbetween other routines doing WAL replay, adding to the confusion. I believe that I used this scheme because of the fact that the new functions were conceptually related to REDO routines, even though they run during original execution. I'm quite happy to revise the code based on your suggestions, though. > The memcpy in heap_xlog_freeze_page() seems a tad odd. I assume that the > alignment guarantees for xl_heap_freeze_plan are too weak? They're not too weak. I'm not sure why the memcpy() was used. I see your point; it makes you wonder if it must be necessary, which then seems to call into question why it's okay to access the main array as an array. I can change this detail, too. I'll try to get back to it this week. -- Peter Geoghegan
Commits
-
Rename and relocate freeze plan dedup routines.
- 50767705ed09 16.0 landed
-
Deduplicate freeze plans in freeze WAL records.
- 9e5405993c1e 16.0 landed