From: | Peter Geoghegan <pg(at)bowt(dot)ie> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Truncate line pointer array during VACUUM. |
Date: | 2021-04-07 15:48:13 |
Message-ID: | E1lUAPd-0000Is-Av@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Truncate line pointer array during VACUUM.
Teach VACUUM to truncate the line pointer array of each heap page when a
contiguous group of LP_UNUSED line pointers appear at the end of the
array -- these unused and unreferenced items are excluded. This process
occurs during VACUUM's second pass over the heap, right after LP_DEAD
line pointers on the page (those encountered/pruned during the first
pass) are marked LP_UNUSED.
Truncation avoids line pointer bloat with certain workloads,
particularly those involving continual range DELETEs and bulk INSERTs
against the same table.
Also harden heapam code to check for an out-of-range page offset number
in places where we weren't already doing so.
Author: Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com>
Author: Peter Geoghegan <pg(at)bowt(dot)ie>
Reviewed-By: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
Reviewed-By: Peter Geoghegan <pg(at)bowt(dot)ie>
Discussion: https://postgr.es/m/CAEze2WjgaQc55Y5f5CQd3L=eS5CZcff2Obxp=O6pto8-f0hC4w@mail.gmail.com
Discussion: https://postgr.es/m/CAH2-Wzn6a64PJM1Ggzm=uvx2otsopJMhFQj_g1rAj4GWr3ZSzw@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/3c3b8a4b26891892bccf3d220580a7f413c0b9ca
Modified Files
--------------
src/backend/access/heap/heapam.c | 22 +++++--
src/backend/access/heap/pruneheap.c | 4 ++
src/backend/access/heap/vacuumlazy.c | 16 ++++-
src/backend/storage/page/bufpage.c | 112 +++++++++++++++++++++++++++++++++--
src/include/storage/bufpage.h | 1 +
5 files changed, 144 insertions(+), 11 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2021-04-07 16:11:52 | pgsql: amcheck: Remove duplicate XID/MXID bounds checks. |
Previous Message | Tom Lane | 2021-04-07 15:22:29 | pgsql: Tighten up allowed names for custom GUC parameters. |