On Tue, May 11, 2021 at 05:37:50PM +0530, Bharath Rupireddy wrote: > 3) Should the Assert(nindexes > 0); in begin_parallel_vacuum just be > Assert(nindexes > 1); as this function is entered only when indexes > are > 1?
I think you're right, at least with the current implementation that parallelization is done across indexes. Same in parallel_vacuum_main. > 4) IIUC, below comment says that even if PARALLEL 0 is specified with > VACUUM command, there are chances that the indexes are vacuumed in > parallel. Isn't it a bit unusual that a user specified 0 workers but > still the system is picking up parallelism? I'm sure this would have > been discussed, but I'm curious to know the reason. > * nrequested is the number of parallel workers that user requested. If > * nrequested is 0, we compute the parallel degree based on nindexes, that is > * the number of indexes that support parallel vacuum. No - nrequested is not actually the number of workers requested - it seems like a poor choice of name. This is the key part: src/include/commands/vacuum.h * The number of parallel vacuum workers. 0 by default which means choose * based on the number of indexes. -1 indicates parallel vacuum is * disabled. */ int nworkers; } VacuumParams; The parsing code is in src/backend/commands/vacuum.c. > 8) Is it still true that if parallel workers are specified as 0 the > parallelism will not be picked up? > From the docs: This feature is known as parallel vacuum. To disable > this feature, one can use PARALLEL option and specify parallel workers > as zero. I think it's the same answer as above. -- Justin