RE: parallel vacuum comments

Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>

From: "houzj.fnst@fujitsu.com" <houzj.fnst@fujitsu.com>
To: Masahiko Sawada <sawada.mshk@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>, Peter Geoghegan <pg@bowt.ie>, Andres Freund <andres@anarazel.de>, Amit Kapila <amit.kapila16@gmail.com>
Date: 2021-11-30T05:33:09Z
Lists: pgsql-hackers
On Mon, Nov 29, 2021 11:38 AM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
> 
> Maybe we can start with using parallel_vacuum_*. We can change them
> later if there is an argument.
> 
> I've attached an updated patch. I don't update the terminology in
> vacuum that we're discussing on another thread[1].

Hi,

I noticed the patch no longer applies on the latest source.

And few comments.
1)
+static void set_parallel_vacuum_index_status(ParallelVacuumState *pvs,
+											 bool bulkdel,
+											 int num_index_scans);
+static void parallel_vacuum_all_indexes(ParallelVacuumState *pvs, bool bulkdel,
+										int num_index_scans);
...
+static bool index_can_participate_parallel_vacuum(Relation indrel,
+												  int num_index_scans);

Maybe the parameter num_index_scans can be replaced by a bool flag since it is
only used in the check "num_index_scans > 0" and "num_index_scans == 0".

2)
+		/* Reinitialize the parallel context to relaunch parallel workers */
+		if (!pvs->first_time)

It seems the ParallelVacuumState::first_time was not initialized before ?

Best regards
Hou zj

Commits

  1. Move parallel vacuum code to vacuumparallel.c.

  2. Move index vacuum routines to vacuum.c.

  3. Improve parallel vacuum implementation.

  4. Fix parallel amvacuumcleanup safety bug.

  5. Simplify state managed by VACUUM.