On Fri, Sep 1, 2023 at 12:34 PM Robert Haas <robertmh...@gmail.com> wrote: > If the table > is being vacuumed frequently, then the last-vacuum-LSN will be newer, > which means we'll freeze *more* aggressively.
Sort of like how if you set autovacuum_vacuum_scale_factor low enough, with standard pgbench, with heap fill factor tuned, autovacuum will never think that the table doesn't need to be vacuumed. It will continually see enough dead heap-only tuples to get another autovacuum each time. Though there won't be any LP_DEAD items at any point -- regardless of when VACUUM actually runs. When I reported this a couple of years ago, I noticed that autovacuum would spin whenever I set autovacuum_vacuum_scale_factor to 0.02. But autovacuum would *never* run (outside of antiwraparound autovacuums) when it was set just a little higher (perhaps 0.03 or 0.04). So there was some inflection point at which its behavior totally changed. > And I'm not sure why we > want to do that. If the table is being vacuumed a lot, it's probably > also being modified a lot, which suggests that we ought to be more > cautious about freezing, rather than the reverse. Why wouldn't it be both things at the same time, for the same table? Why not also avoid setting pages all-visible? The WAL records aren't too much smaller than most freeze records these days -- 64 bytes on most systems. I realize that the rules for FPIs are a bit different when page-level checksums aren't enabled, but fundamentally it's the same situation. No? -- Peter Geoghegan