[COMMITTERS] pgsql: Avoid superfluous work for commits during logical slotcreation. - Mailing list pgsql-committers

From Andres Freund
Subject [COMMITTERS] pgsql: Avoid superfluous work for commits during logical slotcreation.
Date
Msg-id E1d9fGo-00087a-1t@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Avoid superfluous work for commits during logical slot creation.

Before 955a684e0401 logical decoding snapshot maintenance needed to
cope with transactions it might not have seen in their entirety. For
such transactions we'd to assume they modified the catalog (could have
happened before we were watching), and thus a new snapshot had to be
built, and distributed to concurrently running transactions.

That's problematic because building a new snapshot isn't that cheap ,
especially as the the array of committed transactions needs to be
sorted.  When creating a slot on a server with a lot of transactions,
this could make logical slot creation infeasibly expensive.

After 955a684e0401 there's no need to deal with transaction that
aren't guaranteed to be fully observable.  That allows to avoid
building snapshots for transactions that haven't modified catalog,
even before reaching consistency.

While this isn't necessarily a bugfix, slot creation being impossible
in some production workloads, is severe enough to warrant
backpatching.

Author: Andres Freund, based on a quite different patch from Petr Jelinek
Analyzed-By: Petr Jelinek
Reviewed-By: Petr Jelinek
Discussion: https://postgr.es/m/f37e975c-908f-858e-707f-058d3b1eb214@2ndquadrant.com
Backpatch: 9.4-, where logical decoding has been introduced

Branch
------
REL9_5_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/fa9207c7415c9aadb382863f0cc6cc2c4de77bdf

Modified Files
--------------
src/backend/replication/logical/snapbuild.c | 124 +++++++++++++++-------------
1 file changed, 68 insertions(+), 56 deletions(-)


pgsql-committers by date:

Previous
From: Andres Freund
Date:
Subject: [COMMITTERS] pgsql: Avoid superfluous work for commits during logical slotcreation.
Next
From: Andres Freund
Date:
Subject: [COMMITTERS] pgsql: Avoid superfluous work for commits during logical slotcreation.