Re: POC: Parallel processing of indexes in autovacuum

Daniil Davydov <3danissimo@gmail.com>

From: Daniil Davydov <3danissimo@gmail.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: Alexander Korotkov <aekorotkov@gmail.com>, SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>, Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>, Sami Imseih <samimseih@gmail.com>, Matheus Alcantara <matheusssilv97@gmail.com>, Maxim Orlov <orlovmg@gmail.com>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-04T08:37:55Z
Lists: pgsql-hackers
Hi,

On Sat, Apr 4, 2026 at 8:12 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
>
> Regarding the regression tests, ISTM we no longer need
> 'autovacuum-leader-before-indexes-processing' injection point since it
> currently tests that parallel workers update their delay parameters
> during the initialization (i.e., in parallel_vacuum_main()). In order
> to verify the behavior of workers updating their delay parameters
> while processing indexes, we would need another injection ponit to
> stop parallel workers, which seems overkill to me. So I removed it but
> the test still covers the propagation logic.
>
> Regarding the patch, I don't think it's a good idea to include
> bgworker_internals.h from reloptions.c:
>
> I'd leave the maximum value as 1024.

OK, let's leave it.

>
> I've attached patch and please check it. I think it's a good shape and
> I'm going to push it next Monday barrying objections.
>

Thank you for updating the patch!
All changes look good to me.

BTW, what about the "opt-in vs. opt-out style" issue?
As I wrote here [1], we can consider a new approach - allow the user to set the
autovacuum_max_workers reloption even if GUC parameter is zero.
I think it can satisfy all possible use cases.

[1] https://www.postgresql.org/message-id/CAJDiXggvE%3De%3D0%2BHnZ1XjwUcXYTb0dw77pRUts5gqY997YaxVjQ%40mail.gmail.com

--
Best regards,
Daniil Davydov



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Allow autovacuum to use parallel vacuum workers.

  2. Add parallel vacuum worker usage to VACUUM (VERBOSE) and autovacuum logs.

  3. doc: Put new options in consistent order on man pages