Re: Perform streaming logical transactions by background workers and parallel apply

From: Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>
To: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
Cc: Peter Smith <smithpb2250(at)gmail(dot)com>, "houzj(dot)fnst(at)fujitsu(dot)com" <houzj(dot)fnst(at)fujitsu(dot)com>, "shiy(dot)fnst(at)fujitsu(dot)com" <shiy(dot)fnst(at)fujitsu(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Perform streaming logical transactions by background workers and parallel apply
Date: 2022-05-11 04:05:02
Message-ID: CAD21AoCwaU8SqjmC7UkKWNjDg3Uz4FDGurMpis3zw5SEC+27jQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, May 10, 2022 at 5:59 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Tue, May 10, 2022 at 10:39 AM Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com> wrote:
> >
> > On Wed, May 4, 2022 at 8:44 AM Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
> > >
> > > On Tue, May 3, 2022 at 5:16 PM Peter Smith <smithpb2250(at)gmail(dot)com> wrote:
> > > >
> > > ...
> > >
> > > > Avoiding unexpected differences like this is why I suggested the
> > > > option should have to be explicitly enabled instead of being on by
> > > > default as it is in the current patch. See my review comment #14 [1].
> > > > It means the user won't have to change their existing code as a
> > > > workaround.
> > > >
> > > > ------
> > > > [1] https://www.postgresql.org/message-id/CAHut%2BPuqYP5eD5wcSCtk%3Da6KuMjat2UCzqyGoE7sieCaBsVskQ%40mail.gmail.com
> > > >
> > >
> > > Sorry I was wrong above. It seems this behaviour was already changed
> > > in the latest patch v5 so now the option value 'on' means what it
> > > always did. Thanks!
> >
> > Having it optional seems a good idea. BTW can the user configure how
> > many apply bgworkers can be used per subscription or in the whole
> > system? Like max_sync_workers_per_subscription, is it better to have a
> > configuration parameter or a subscription option for that? If so,
> > setting it to 0 probably means to disable the parallel apply feature.
> >
>
> Yeah, that might be useful but we are already giving an option while
> creating a subscription whether to allow parallelism, so will it be
> useful to give one more way to disable this feature? OTOH, having
> something like max_parallel_apply_workers/max_bg_apply_workers at the
> system level can give better control for how much parallelism the user
> wishes to allow for apply work.

Or we can have something like
max_parallel_apply_workers_per_subscription that controls how many
parallel apply workers can launch per subscription. That also gives
better control for the number of parallel apply workers.

> If we have such a new parameter then I
> think max_logical_replication_workers should include apply workers,
> parallel apply workers, and table synchronization?

Agreed.

> In such a case,
> don't we need to think of increasing the default value of
> max_logical_replication_workers?

I think we would need to think about that if the parallel apply is
enabled by default but given that it's disabled by default I'm fine
with the current default value.

Regards,

--
Masahiko Sawada
EDB: https://www.enterprisedb.com/

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nathan Bossart 2022-05-11 04:12:11 Re: make MaxBackends available in _PG_init
Previous Message David Rowley 2022-05-11 03:54:19 Re: First draft of the PG 15 release notes