Обсуждение: pgsql: Keep newest live XID up-to-date even if page not all-visible

Поиск
Список
Период
Сортировка

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

От
Melanie Plageman
Дата:
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(-)