Re: Eliminate redundant tuple visibility check in vacuum
David Geier <geidav.pg@gmail.com>
From: David Geier <geidav.pg@gmail.com>
To: Melanie Plageman <melanieplageman@gmail.com>,
Pg Hackers <pgsql-hackers@postgresql.org>
Cc: Andres Freund <andres@anarazel.de>
Date: 2023-08-29T09:07:35Z
Lists: pgsql-hackers
Hi Melanie, On 8/29/23 01:49, Melanie Plageman wrote: > While working on a set of patches to combine the freeze and visibility > map WAL records into the prune record, I wrote the attached patches > reusing the tuple visibility information collected in heap_page_prune() > back in lazy_scan_prune(). > > heap_page_prune() collects the HTSV_Result for every tuple on a page > and saves it in an array used by heap_prune_chain(). If we make that > array available to lazy_scan_prune(), it can use it when collecting > stats for vacuum and determining whether or not to freeze tuples. > This avoids calling HeapTupleSatisfiesVacuum() again on every tuple in > the page. > > It also gets rid of the retry loop in lazy_scan_prune(). How did you test this change? Could you measure any performance difference? If so could you provide your test case? -- David Geier (ServiceNow)
Commits
-
Remove retry loop in heap_page_prune().
- 1ccc1e05ae8f 17.0 landed
-
Return data from heap_page_prune via a struct.
- 4e9fc3a97620 17.0 landed