aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-04-03 19:32:28 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-04-03 19:32:28 +0300
commit6dbb490261a6170a3fc3e326c6983ad63e795047 (patch)
treea3c0a26893a20ed6d191d0aebcc5722c3c6984c4 /doc/src
parent26d138f64474394cf1e573384e8f38efa637b674 (diff)
downloadpostgresql-6dbb490261a6170a3fc3e326c6983ad63e795047.tar.gz
postgresql-6dbb490261a6170a3fc3e326c6983ad63e795047.zip
Combine freezing and pruning steps in VACUUM
Execute both freezing and pruning of tuples in the same heap_page_prune() function, now called heap_page_prune_and_freeze(), and emit a single WAL record containing all changes. That reduces the overall amount of WAL generated. This moves the freezing logic from vacuumlazy.c to the heap_page_prune_and_freeze() function. The main difference in the coding is that in vacuumlazy.c, we looked at the tuples after the pruning had already happened, but in heap_page_prune_and_freeze() we operate on the tuples before pruning. The heap_prepare_freeze_tuple() function is now invoked after we have determined that a tuple is not going to be pruned away. VACUUM no longer needs to loop through the items on the page after pruning. heap_page_prune_and_freeze() does all the work. It now returns the list of dead offsets, including existing LP_DEAD items, to the caller. Similarly it's now responsible for tracking 'all_visible', 'all_frozen', and 'hastup' on the caller's behalf. Author: Melanie Plageman <melanieplageman@gmail.com> Discussion: https://www.postgresql.org/message-id/20240330055710.kqg6ii2cdojsxgje@liskov
Diffstat (limited to 'doc/src')
0 files changed, 0 insertions, 0 deletions