Thread
-
Re: POC: Parallel processing of indexes in autovacuum
Daniil Davydov <3danissimo@gmail.com> — 2025-11-23T15:02:22Z
Hi, On Sun, Nov 23, 2025 at 5:51 AM Sami Imseih <samimseih@gmail.com> wrote: > > > > nworkers has a double meaning. The return value of > > > AutoVacuumReserveParallelWorkers > > > is nreserved. I think this should be > > > > > > ``` > > > nreserved = AutoVacuumReserveParallelWorkers(nworkers); > > > ``` > > > > > > and nreserved becomes the authoritative value for the number of parallel > > > workers after that point. > > I could not find this pattern being used in the code base. > I think it will be better and more in-line without what we generally do > and pass-by-reference and update the value inside > AutoVacuumReserveParallelWorkers: > > ``` > AutoVacuumReserveParallelWorkers(&nworkers). > ``` Maybe I just don't like functions with side effects, but this function will have ones anyway. I'll add logic with passing by reference as you suggested. > > >> --- > >> { name => 'autovacuum_max_parallel_workers', type => 'int', context => > >> 'PGC_SIGHUP', group => 'VACUUM_AUTOVACUUM', > >> short_desc => 'Maximum number of parallel autovacuum workers, that > >> can be taken from bgworkers pool.', > >> long_desc => 'This parameter is capped by "max_worker_processes" > >> (not by "autovacuum_max_workers"!).', > >> variable => 'autovacuum_max_parallel_workers', > >> boot_val => '0', > >> min => '0', > >> max => 'MAX_BACKENDS', > >> }, > >> > >> Parallel vacuum in autovacuum can be used only when users set the > >> autovacuum_parallel_workers storage parameter. How about using the > >> default value 2 for autovacuum_max_parallel_workers GUC parameter? > > > Sounds reasonable, +1 for it. > > v15-0004 has an incorrect default value for `autovacuum_max_parallel_workers`. > It should now be 2. > > + Sets the maximum number of parallel autovacuum workers that > + can be used for parallel index vacuuming at one time. Is capped by > + <xref linkend="guc-max-worker-processes"/>. The default is 0, > + which means no parallel index vacuuming. Thanks for noticing it! Fixed. I am sending an updated set of patches. -- Best regards, Daniil Davydov