Re: [PATCH] fix a performance issue with multiple logical-decoding walsenders

From: Julien Rouhaud <rjuju123(at)gmail(dot)com>
To: Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [PATCH] fix a performance issue with multiple logical-decoding walsenders
Date: 2019-12-29 12:32:31
Message-ID: CAOBaU_ZxJs2VFg=ZP8oKtMAOQP6zfwQ5M1NbzkDavNjBQD_LXQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Dec 28, 2019 at 1:56 PM Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info> wrote:
>
> Thank you for your comments.
> Attached to this email is a patch with better comments regarding the
> XLogSendLogical change.

Arguably the first test to compare to InvalidXLogRecPtr is unneeded,
as any value of EndRecPtr is greater or equal than that value. It
will only save at best 1 GetFlushRecPtr() per walsender process
lifetime, so I'm not sure it's worth arguing about it. Other than
that I still think that it's a straightforward optimization that
brings nice speedup, and I don't see any problem with this patch. I
think that given the time of the year you should create a commitfest
entry for this patch to make sure it won't be forgotten (and obviously
I'll mark it as RFC, unless someone objects by then).

> We've spent quite some time yesterday benching it again, this time with
> changes that must be fully processed by the decoder. The speed-up is obviously
> much smaller, we are only ~5% faster than without the patch.

I'm assuming that it's benchmarking done with multiple logical slots?
Anyway, a 5% speedup in the case that this patch is not aimed to
optimize is quite nice!

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2019-12-29 12:37:15 Re: Assert failure due to "drop schema pg_temp_3 cascade" for temporary tables and \d+ is not showing any info after drooping temp table schema
Previous Message Alexey Kondratov 2019-12-29 12:12:16 Re: Physical replication slot advance is not persistent