On Sun, Dec 1, 2019 at 11:01 PM Sergei Kornilov <s...@zsrv.org> wrote:

> Hi
>
> > I think I got your point. Your proposal is that it's more efficient if
> > we make the leader process vacuum the index that can be processed only
> > the leader process (i.e. indexes not supporting parallel index vacuum)
> > while workers are processing indexes supporting parallel index vacuum,
> > right? That way, we can process indexes in parallel as much as
> > possible.
>
> Right
>
> > So maybe we can call vacuum_or_cleanup_skipped_indexes first
> > and then call vacuum_or_cleanup_indexes_worker. But I'm not sure that
> > there are parallel-safe remaining indexes after the leader finished
> > vacuum_or_cleanup_indexes_worker, as described on your proposal.
>
> I meant that after processing missing indexes (not supporting parallel
> index vacuum), the leader can start processing indexes that support the
> parallel index vacuum, along with parallel workers.


Your idea is good, but remember we have always considered a leader as one
worker if the leader can participate.  If we do what you are suggesting
that won't be completely true as a leader will not completely participate
in a parallel vacuum.  It might be that we don't consider leader equivalent
to one worker in the presence of indexes that don't support a parallel
vacuum, but I am not sure if that really matters much.  I think overall it
should not matter much because we won't have that many indexes that don't
support a parallel vacuum.


-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Reply via email to