On Wed, Jan 8, 2025 at 3:02 PM Masahiko Sawada <sawada.m...@gmail.com> wrote:
>
> On Thu, Dec 19, 2024 at 11:11 PM Nisha Moond <nisha.moond...@gmail.com> wrote:
> >
> > Here is further performance test analysis with v16 patch-set.
> >
> >
> > In the test scenarios already shared on -hackers [1], where pgbench was run 
> > only on the publisher node in a pub-sub setup, no performance degradation 
> > was observed on either node.
> >
> >
> >
> > In contrast, when pgbench was run only on the subscriber side with 
> > detect_update_deleted=on [2], the TPS performance was reduced due to dead 
> > tuple accumulation. This performance drop depended on the 
> > wal_receiver_status_interval—larger intervals resulted in more dead tuple 
> > accumulation on the subscriber node. However, after the improvement in 
> > patch v16-0002, which dynamically tunes the status request, the default TPS 
> > reduction was limited to only 1%.
> >
> >
> >
> > We performed more benchmarks with the v16-patches where pgbench was run on 
> > both the publisher and subscriber, focusing on TPS performance. To 
> > summarize the key observations:
> >
> >  - No performance impact on the publisher as dead tuple accumulation does 
> > not occur on the publisher.
>
> Nice. It means that frequently getting in-commit-phase transactions by
> the subscriber didn't have a negative impact on the publisher's
> performance.
>
> >
> >  - The performance is reduced on the subscriber side (TPS reduction (~50%) 
> > [3] ) due to dead tuple retention for the conflict detection when 
> > detect_update_deleted=on.
> >
> >  - Performance reduction happens only on the subscriber side, as workload 
> > on the publisher is pretty high and the apply workers must wait for the 
> > amount of transactions with earlier timestamps to be applied and flushed 
> > before advancing the non-removable XID to remove dead tuples.
>
> Assuming that the performance dip happened due to dead tuple retention
> for the conflict detection, would TPS on other databases also be
> affected?
>

As we use slot->xmin to retain dead tuples, shouldn't the impact be
global (means on all databases)? Or, maybe I am missing something.

> >
> >
> > [3] Test with pgbench run on both publisher and subscriber.
> >
> >
> >
> > Test setup:
> >
> > - Tests performed on pgHead + v16 patches
> >
> > - Created a pub-sub replication system.
> >
> > - Parameters for both instances were:
> >
> >
> >
> >    share_buffers = 30GB
> >
> >    min_wal_size = 10GB
> >
> >    max_wal_size = 20GB
> >
> >    autovacuum = false
>
> Since you disabled autovacuum on the subscriber, dead tuples created
> by non-hot updates are accumulated anyway regardless of
> detect_update_deleted setting, is that right?
>

I think hot-pruning mechanism during the update operation will remove
dead tuples even when autovacuum is disabled.

-- 
With Regards,
Amit Kapila.


Reply via email to