Re: Add an option to skip loading missing publication to avoid logical replication failure - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: Add an option to skip loading missing publication to avoid logical replication failure
Date
Msg-id CAA4eK1LSOUXoH+gY1OikbHajxpgbZJqs=jfYGDmckuWWXzcLMQ@mail.gmail.com
Whole thread Raw
In response to Re: Add an option to skip loading missing publication to avoid logical replication failure  (vignesh C <vignesh21@gmail.com>)
Responses Re: Add an option to skip loading missing publication to avoid logical replication failure
List pgsql-hackers
On Mon, Mar 3, 2025 at 2:30 PM vignesh C <vignesh21@gmail.com> wrote:
>
> On Tue, 25 Feb 2025 at 15:32, vignesh C <vignesh21@gmail.com> wrote:
> >
> > The attached script has the script that was used for testing. Here the
> > NUM_RECORDS count should be changed accordingly for each of the tests
> > and while running the test with the patch change uncomment the drop
> > publication command.
>
> I have done further analysis on the test and changed the test to
> compare it better with HEAD. The execution time is in milliseconds.
> Brach/records  |  100     |  1000   |  10000    |  100000  |  1000000
> Head               |   10.43  |  15.86  |   64.44    |  550.56  |   8991.04
> Patch              |   11.35  |  17.26   |   73.50    |  640.21  |  10104.72
> % diff              |   -8.82  |  -8.85    |   -14.08   |   -16.28  |  -12.38
>
> There is a  performance degradation in the range of 8.8 to 16.2 percent.
>

- /* Validate the entry */
- if (!entry->replicate_valid)
+ /*
+ * If the publication is invalid, check for updates.
+ * This optimization ensures that the next block, which queries the system
+ * tables and builds the relation entry, runs only if a new publication was
+ * created.
+ */
+ if (!publications_valid && data->publications)
+ {
+ bool skipped_pub = false;
+ List    *publications;
+
+ publications = LoadPublications(data->publication_names, &skipped_pub);

The publications_valid flag indicates whether the publications cache
is valid or not; the flag is set to false for any invalidation in the
pg_publication catalog. I wonder that instead of using the same flag
what if we use a separate publications_skipped flag? If that works,
you don't even need to change the current location where we
LoadPublications.

--
With Regards,
Amit Kapila.



pgsql-hackers by date:

Previous
From: Andrei Lepikhov
Date:
Subject: Re: Considering fractional paths in Append node
Next
From: Alena Rybakina
Date:
Subject: Re: Considering fractional paths in Append node