pgsql: Keep newest live XID up-to-date even if page not all-visible - Mailing list pgsql-committers

From Melanie Plageman
Subject pgsql: Keep newest live XID up-to-date even if page not all-visible
Date
Msg-id E1w57au-001HZX-1N@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Keep newest live XID up-to-date even if page not all-visible

During pruning, we keep track of the newest xmin of live tuples on the
page visible to all running and future transactions so that we can use
it later as the snapshot conflict horizon when setting the VM if the
page turns out to be all-visible.

Previously, we stopped updating this value once we determined the page
was not all-visible. However, maintaining it even when the page is not
all-visible is inexpensive and makes the snapshot conflict horizon
calculation clearer. This guarantees it won't contain a stale value.

Since we'll keep it up to date all the time now anyway, there's no
reason not to maintain set_all_visible for on-access pruning. This will
allow us to set the VM on-access in the future.

Author: Melanie Plageman <melanieplageman@gmail.com>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Discussion: https://postgr.es/m/bqc4kh5midfn44gnjiqez3bjqv4zogydguvdn446riw45jcf3y%404ez66il7ebvk

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/9ba3ec076a68b82d49fb4d0ea008205befd2292b

Modified Files
--------------
src/backend/access/heap/pruneheap.c  | 138 +++++++++++++++--------------------
src/backend/access/heap/vacuumlazy.c |  30 ++++----
2 files changed, 73 insertions(+), 95 deletions(-)


pgsql-committers by date:

Previous
From: Melanie Plageman
Date:
Subject: pgsql: Use GlobalVisState in vacuum to determine page level visibility
Next
From: Robert Haas
Date:
Subject: pgsql: get_memoize_path: Don't exit quickly when PGS_NESTLOOP_PLAIN is