Skip to content

heap: tune HOT prune frequency#40

Draft
gburd wants to merge 6 commits into
masterfrom
heap-prune-freq
Draft

heap: tune HOT prune frequency#40
gburd wants to merge 6 commits into
masterfrom
heap-prune-freq

Conversation

@gburd

@gburd gburd commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Draft PR opened to enable OCR AI review on the heap-prune-freq branch. Title/description are provisional — rename before publishing to pgsql-hackers.

Exercise the existing heapam page pruning code on the INSERT paths to
more pro-actively re-order heap pages and potentially free up space.
heap_page_prune_opt() doesn't take into account the size of the tuple that's
trying to be inserted, it only checks if the page has less free space than the
minimum threshold, but doesn't consider whether pruning could make enough space
for a specific tuple.  Consider pruning if the current free space plus
potential space from pruning could accommodate the tuple, even if the page
doesn't meet the normal threshold.
Add scan-time heap page pruning functionality and a mechanism to track page
modifications during scans and re-evaluate pruning eligibility.  This addresses
the issue where multiple updates during a scan don't trigger heap page pruning
until the next scan.
Set PageSetPrunable during heap_insert() and heap_multi_insert() to
enable opportunistic cleanup of dead tuples from aborted transactions.
Previously, aborted insert tuples would remain until the next vacuum
cycle if no other modifications occurred on the page.
@github-actions github-actions Bot force-pushed the master branch 3 times, most recently from 15913cb to 06a2a69 Compare July 13, 2026 11:54
@gburd gburd force-pushed the master branch 2 times, most recently from 3b49b2a to 0b3e646 Compare July 13, 2026 13:08
@github-actions github-actions Bot force-pushed the master branch 2 times, most recently from 3ed29c4 to e495986 Compare July 14, 2026 02:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant