Re: Option to not use ringbuffer in VACUUM, using it in failsafe mode
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Peter Geoghegan <pg@bowt.ie>, pgsql-hackers@postgresql.org, Robert Haas <robertmhaas@gmail.com>, Melanie Plageman <melanieplageman@gmail.com>, David Rowley <dgrowleyml@gmail.com>
Date: 2023-01-11T21:39:05Z
Lists: pgsql-hackers
Hi, On 2023-01-11 16:18:34 -0500, Tom Lane wrote: > Peter Geoghegan <pg@bowt.ie> writes: > > On Wed, Jan 11, 2023 at 11:18 AM Andres Freund <andres@anarazel.de> wrote: > >> I don't like that - it's also quite useful to disable use of ringbuffers when > >> you actually need to clean up indexes. Especially when we have a lot of dead > >> tuples we'll rescan indexes over and over... > > > That's a fair point. > > > My vote goes to "REUSE_BUFFERS", then. > > I wonder whether it could make sense to allow a larger ringbuffer size, > rather than just the limit cases of "on" and "off". I can see that making sense, particularly if we were to later extend this to other users of ringbuffers. E.g. COPYs us of the ringbuffer makes loading of data > 16MB but also << s_b vastly slower, but it can still be very important to use if there's lots of parallel processes loading data. Maybe BUFFER_USAGE_LIMIT, with a value from -1 to N, with -1 indicating the default value, 0 preventing use of a buffer access strategy, and 1..N indicating the size in blocks? Would we want to set an upper limit lower than implied by the memory limit for the BufferAccessStrategy allocation? Greetings, Andres Freund
Commits
-
Add unit to vacuum_buffer_usage_limit value in postgresql.conf.sample.
- b72f564d87d1 16.0 landed
-
Improve VACUUM/ANALYZE BUFFER_USAGE_LIMIT docs
- c0235013c13b 16.0 landed
-
Add --buffer-usage-limit option to vacuumdb
- ae78cae3be62 16.0 landed
-
Add VACUUM/ANALYZE BUFFER_USAGE_LIMIT option
- 1cbbee033857 16.0 landed
-
Move various prechecks from vacuum() into ExecVacuum()
- b9b125b9c143 16.0 landed
-
Always make a BufferAccessStrategy for ANALYZE
- bccd6908ca82 16.0 landed
-
Rename BufferAccessStrategyData.ring_size to nbuffers
- 8d928e3a9fe7 16.0 landed
-
Disable vacuum's use of a buffer access strategy during failsafe
- 4830f1024325 16.0 landed
-
Only make buffer strategy for vacuum when it's likely needed
- 32fbe0239b03 16.0 landed
-
Remove some global variables from vacuum.c
- 3f476c953495 16.0 landed
-
Doc: add Buffer Access Strategy to the glossary
- c8f8d0eb1868 16.0 landed