Remove retry loop in heap_page_prune().
Robert Haas <rhaas@postgresql.org>
Remove retry loop in heap_page_prune(). The retry loop is needed because heap_page_prune() calls HeapTupleSatisfiesVacuum() and then lazy_scan_prune() does the same thing again, and they might get different answers due to concurrent clog updates. But this patch makes heap_page_prune() return the HeapTupleSatisfiesVacuum() results that it computed back to the caller, which allows lazy_scan_prune() to avoid needing to recompute those values in the first place. That's nice both because it eliminates the need for a retry loop and also because it's cheaper. Melanie Plageman, reviewed by David Geier, Andres Freund, and me. Discussion: https://postgr.es/m/CAAKRu_br124qsGJieuYA0nGjywEukhK1dKBfRdby_4yY3E9SXA%40mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/heap/pruneheap.c | modified | +17 −19 |
| src/backend/access/heap/vacuumlazy.c | modified | +13 −30 |
| src/include/access/heapam.h | modified | +25 −0 |
Discussion
- Eliminate redundant tuple visibility check in vacuum 25 messages · 2023-08-28 → 2023-10-02