Re: parallel vacuum - few questions on docs, comments and code - Mailing list pgsql-hackers

From Justin Pryzby
Subject Re: parallel vacuum - few questions on docs, comments and code
Date
Msg-id 20210511130147.GG27406@telsasoft.com
Whole thread Raw
In response to parallel vacuum - few questions on docs, comments and code  (Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>)
Responses Re: parallel vacuum - few questions on docs, comments and code
Re: parallel vacuum - few questions on docs, comments and code
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: Inherited UPDATE/DELETE vs async execution
Next
From: "Jonathan S. Katz"
Date:
Subject: Re: PG 14 release notes, first draft