Re: Block level parallel vacuum

Sergei Kornilov <[email protected]> Fri, 10 Jan 2020 13:21:02 +0300
Newsgroups gmane.comp.db.postgresql.devel.general
Message-ID <[email protected]>
Hi
Thank you for update! I looked again

(vacuum_indexes_leader)
+		/* Skip the indexes that can be processed by parallel workers */
+		if (!skip_index)
+			continue;

Does the variable name skip_index not confuse here? Maybe rename to something like can_parallel?

Another question about behavior on temporary tables. Use case: the user commands just "vacuum;" to vacuum entire database (and has enough maintenance workers). Vacuum starts fine in parallel, but on first temporary table we hit:

+	if (RelationUsesLocalBuffers(onerel) && params->nworkers >= 0)
+	{
+		ereport(WARNING,
+				(errmsg("disabling parallel option of vacuum on \"%s\" --- cannot vacuum temporary tables in parallel",
+						RelationGetRelationName(onerel))));
+		params->nworkers = -1;
+	}

And therefore we turn off the parallel vacuum for the remaining tables... Can we improve this case?

regards, Sergei