[MASSMAIL]pgsql: Combine freezing and pruning steps in VACUUM
От | Heikki Linnakangas |
---|---|
Тема | [MASSMAIL]pgsql: Combine freezing and pruning steps in VACUUM |
Дата | |
Msg-id | E1rs3ZH-000KAy-Rz@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
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 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/6dbb490261a6170a3fc3e326c6983ad63e795047 Modified Files -------------- src/backend/access/heap/heapam.c | 67 +-- src/backend/access/heap/heapam_handler.c | 2 +- src/backend/access/heap/pruneheap.c | 761 +++++++++++++++++++++++++++---- src/backend/access/heap/vacuumlazy.c | 435 +++--------------- src/backend/storage/ipc/procarray.c | 6 +- src/include/access/heapam.h | 85 ++-- src/tools/pgindent/typedefs.list | 2 +- 7 files changed, 813 insertions(+), 545 deletions(-)
В списке pgsql-committers по дате отправления: