Re: Option to not use ringbuffer in VACUUM, using it in failsafe mode

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Melanie Plageman <melanieplageman@gmail.com>, Justin Pryzby <pryzby@telsasoft.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org, Robert Haas <robertmhaas@gmail.com>
Date: 2023-04-05T22:05:21Z
Lists: pgsql-hackers
On Wed, Apr 5, 2023 at 2:33 PM David Rowley <dgrowleyml@gmail.com> wrote:
> I read this twice yesterday and again this morning. It looks like
> you're taking an opportunity to complain/vent about
> vacuum_freeze_table_age and didn't really answer my query about why
> all the vacuum GUCs aren't defined in the one file.  I'd just picked
> vacuum_freeze_table_age as a random one from vacuum.c to raise the
> point about the inconsistency about the GUC locations.

I thought that the point was obvious. Which is: the current situation
with the locations of these GUCs came about because the division
between autovacuum and VACUUM used to be a lot clearer, but that
changed. Without the locations of the GUCs also changing. More
generally, the current structure has lots of problems. And so it seems
to me that you're probably not wrong to suspect that it just doesn't
make much sense to keep them in different files now.

-- 
Peter Geoghegan



Commits

  1. Add unit to vacuum_buffer_usage_limit value in postgresql.conf.sample.

  2. Improve VACUUM/ANALYZE BUFFER_USAGE_LIMIT docs

  3. Add --buffer-usage-limit option to vacuumdb

  4. Add VACUUM/ANALYZE BUFFER_USAGE_LIMIT option

  5. Move various prechecks from vacuum() into ExecVacuum()

  6. Always make a BufferAccessStrategy for ANALYZE

  7. Rename BufferAccessStrategyData.ring_size to nbuffers

  8. Disable vacuum's use of a buffer access strategy during failsafe

  9. Only make buffer strategy for vacuum when it's likely needed

  10. Remove some global variables from vacuum.c

  11. Doc: add Buffer Access Strategy to the glossary