Re: New strategies for freezing, advancing relfrozenxid early
Dilip Kumar <dilipbalaut@gmail.com>
From: Dilip Kumar <dilipbalaut@gmail.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Jeff Davis <pgsql@j-davis.com>,
Matthias van de Meent <boekewurm+postgres@gmail.com>, John Naylor <john.naylor@enterprisedb.com>,
Andres Freund <andres@anarazel.de>, Justin Pryzby <pryzby@telsasoft.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-18T08:17:44Z
Lists: pgsql-hackers
On Tue, Jan 17, 2023 at 10:05 AM Peter Geoghegan <pg@bowt.ie> wrote: > > On Mon, Jan 16, 2023 at 8:13 PM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > I think that it makes sense to keep 'vacuum_freeze_strategy_threshold' > > strictly for freezing. But the point is that the eager scanning > > strategy is driven by table freezing needs of the table (tableagefrac) > > that make sense, but if we have selected the eager freezing based on > > the table age and its freezing need then why don't we force the eager > > freezing as well if we have selected eager scanning, after all the > > eager scanning is selected for satisfying the freezing need. > > Don't think of eager scanning as the new name for aggressive mode -- > it's a fairly different concept, because we care about costs now. > Eager scanning can be chosen just because it's very cheap relative to > the alternative of lazy scanning, even when relfrozenxid is still very > recent. (This kind of behavior isn't really new [1], but the exact > implementation from the patch is new.) > > Tables such as pgbench_branches and pgbench_tellers will reliably use > eager scanning strategy, no matter how any GUC has been set -- just > because the added cost is always zero (relative to lazy scanning). It > really doesn't matter how far along tableagefrac here, ever. These > same tables will never use eager freezing strategy, unless the > vacuum_freeze_strategy_threshold GUC is misconfigured. (This is > another example of how scanning strategy and freezing strategy may > differ for the same table.) Yes, I agree with that. Thanks for explaining in detail. > You do have a good point, though. I think that I know what you mean. > Note that antiwraparound autovacuums (or VACUUMs of tables very near > to that point) *will* always use both the eager freezing strategy and > the eager scanning strategy -- which is probably close to what you > meant. Right > The important point is that there can be more than one reason to > prefer one strategy to another -- and the reasons can be rather > different. Occasionally it'll be a combination of two factors together > that push things in favor of one strategy over the other -- even > though either factor on its own would not have resulted in the same > choice. Yes, that makes sense to me. -- Regards, Dilip Kumar EnterpriseDB: 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