On Fri, May 13, 2022 at 08:24:53AM +0530, Amit Kapila wrote: > On Fri, May 13, 2022 at 6:02 AM Euler Taveira <eu...@eulerto.com> wrote: > > > > On Thu, May 12, 2022, at 11:22 AM, Bruce Momjian wrote: > > > > On Thu, May 12, 2022 at 11:12:54AM -0300, Euler Taveira wrote: > > OB> On Thu, May 12, 2022, at 11:03 AM, Bruce Momjian wrote: > > > > > > I looked at that but thought that everyone would already assume we > > > skipped replication of empty transactions, and I didn't see much > > > impact > > > for the user, so I didn't include it. > > > > > > It certainly has an impact on heavy workloads that replicate tables with > > > few > > > modifications. It receives a high traffic of 'begin' and 'commit' > > > messages that > > > the previous Postgres versions have to handle (discard). I would classify > > > it as > > > a performance improvement for logical replication. Don't have a strong > > > opinion > > > if it should be mentioned or not. > > > > Oh, so your point is that a transaction that only has SELECT would > > previously send an empty transaction? I thought this was only for apps > > that create literal empty transactions, which seem rare. > > > > No. It should be a write transaction. If you have a replication setup that > > publish only table foo (that isn't modified often) and most of your > > workload does not contain table foo, Postgres sends 'begin' and 'commit' > > messages to subscriber even if there is no change to replicate. > > > > It reduces network traffic and improves performance by 3-14% on simple > tests [1] like the one shown by Euler. I see a value in adding this as > for the workloads where it hits, it seems more than 99% of network > traffic [2] is due to these empty messages.
I see the point now --- new item: <!-- Author: Amit Kapila <akap...@postgresql.org> 2022-03-30 [d5a9d86d8] Skip empty transactions for logical replication. --> <listitem> <para> Prevent logical replication of empty transactions (Ajin Cherian, Hou Zhijie, Euler Taveira) </para> <para> Previously, write transactions would send empty transactions to subscribers if subscribed tables were not modified. </para> </listitem> -- Bruce Momjian <br...@momjian.us> https://momjian.us EDB https://enterprisedb.com Indecision is a decision. Inaction is an action. Mark Batterson