Re: New strategies for freezing, advancing relfrozenxid early
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andres Freund <andres@anarazel.de>
Cc: Peter Geoghegan <pg@bowt.ie>, Jeff Davis <pgsql@j-davis.com>, Matthias van de Meent <boekewurm+postgres@gmail.com>,
John Naylor <john.naylor@enterprisedb.com>, Justin Pryzby <pryzby@telsasoft.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-26T14:20:57Z
Lists: pgsql-hackers
On Wed, Jan 25, 2023 at 10:56 PM Andres Freund <andres@anarazel.de> wrote: > but that's only true because page level freezing neutered > vacuum_freeze_min_age. Compared to <16, it's a *huge* change. Do you think that page-level freezing (1de58df4fec7325d91f5a8345757314be7ac05da) was improvidently committed? I have always been a bit skeptical of vacuum_freeze_min_age as a mechanism. It's certainly true that it is a waste of energy to freeze tuples that will soon be removed anyway, but on the other hand, repeatedly dirtying the same page for various different freezing and visibility related reasons *really sucks*, and even repeatedly reading the page because we kept deciding not to do anything yet isn't great. It seems possible that the page-level freezing mechanism could help with that quite a bit, and I think that the heuristic that patch proposes is basically reasonable: if there's at least one tuple on the page that is old enough to justify freezing, it doesn't seem like a bad bet to freeze all the others that can be frozen at the same time, at least if it means that we can mark the page all-visible or all-frozen. If it doesn't, then I'm not so sure; maybe we're best off deferring as much work as possible to a time when we *can* mark the page all-visible or all-frozen. In short, I think that neutering vacuum_freeze_min_age at least to some degree might be a good thing, but that's not to say that I'm altogether confident in that patch, either. -- Robert Haas EDB: http://www.enterprisedb.com
Commits
-
Revert "Add eager and lazy freezing strategies to VACUUM."
- 6c6b49726644 16.0 landed
-
Add eager and lazy freezing strategies to VACUUM.
- 4d4179926139 16.0 landed
-
Refine the definition of page-level freezing.
- b37a08323964 16.0 landed
-
Avoid special XID snapshotConflictHorizon values.
- 6daeeb1f9196 16.0 cited
-
Add page-level freezing to VACUUM.
- 1de58df4fec7 16.0 landed
-
Remove overzealous MultiXact freeze assertion.
- 63c844a0a5d7 16.0 landed
-
Refactor how VACUUM passes around its XID cutoffs.
- 4ce3afb82ecf 16.0 landed
-
Deduplicate freeze plans in freeze WAL records.
- 9e5405993c1e 16.0 cited
-
Set relfrozenxid to oldest extant XID seen by VACUUM.
- 0b018fabaaba 15.0 cited
-
Only skip pages marked as clean in the visibility map, if the last 32
- bf136cf6e376 8.4.0 cited
-
Add vacuum_freeze_table_age GUC option, to control when VACUUM should
- 6587818542e7 8.4.0 cited