On Thu, 2022-09-08 at 13:23 -0700, Peter Geoghegan wrote: > The new patch unifies the concept of antiwraparound > VACUUM with the concept of aggressive VACUUM. Now there is only > antiwraparound and regular VACUUM (uh, barring VACUUM FULL). And now > antiwraparound VACUUMs are not limited to antiwraparound autovacuums > -- a manual VACUUM can also be antiwraparound (that's just the new > name for "aggressive").
I like this general approach. The existing GUCs have evolved in a confusing way. > For the most part the > skipping/freezing strategy stuff has a good sense of what matters > already, and shouldn't need to be guided very often. I'd like to know more clearly where manual VACUUM fits in here. Will it user a more aggressive strategy than an autovacuum, and how so? > The patch relegates vacuum_freeze_table_age to a compatibility > option, > making its default -1, meaning "just use autovacuum_freeze_max_age". The purpose of vacuum_freeze_table_age seems to be that, if you regularly issue VACUUM commands, it will prevent a surprise antiwraparound vacuum. Is that still the case? Maybe it would make more sense to have vacuum_freeze_table_age be a fraction of autovacuum_freeze_max_age, and be treated as a maximum so that other intelligence might kick in and freeze sooner? > This makes things less confusing for users and hackers. It may take an adjustment period ;-) > The details of the skipping-strategy-choice algorithm are still > unsettled in v3 (no real change there). ISTM that the important thing > is still the high level concepts. Jeff was slightly puzzled by the > emphasis placed on the cost model/strategy stuff, at least at one > point. Hopefully my intent will be made clearer by the ideas featured > in the new patch. Yes, it's clearing things up, but it's still a complex problem. There's: a. xid age vs the actual amount of deferred work to be done b. advancing relfrozenxid vs skipping all-visible pages c. difficulty in controlling reasonable behavior (e.g. vacuum_freeze_min_age often being ignored, freezing individual tuples rather than pages) Your first email described the motivation in terms of (a), but the patches seem more focused on (b) and (c). > The skipping strategy decision making process isn't > particularly complicated, but it now looks more like an optimization > problem of some kind or other. There's another important point here, which is that it gives an opportunity to decide to freeze some all-visible pages in a given round just to reduce the deferred work, without worrying about advancing relfrozenxid. -- Jeff Davis PostgreSQL Contributor Team - AWS