Re: old_snapshot_threshold bottleneck on replica
Maxim Orlov <orlovmg@gmail.com>
From: Maxim Orlov <orlovmg@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-27T14:30:11Z
Lists: pgsql-hackers
Attachments
- v3-0001-Use-atomic-old_snapshot_threshold.patch (application/octet-stream) patch v3-0001
On Wed, 25 Jan 2023 at 16:52, Robert Haas <robertmhaas@gmail.com> wrote: > On Wed, Jan 25, 2023 at 3:52 AM Maxim Orlov <orlovmg@gmail.com> wrote: > > Well, that's something we - and ideally you, as the patch author - > need to analyze and figure out. We can't just take a shot and hope for > the best. > I thank you for your advices. I've dived deeper into the problem and I think v2 patch is wrong. Accessing threshold_timestamp and threshold_xid in TransactionIdLimitedForOldSnapshots without lock would lead to an improper xlimit calculation. So, my choice would be (3b). My goal is to optimize access to the threshold_timestamp to avoid multiple spinlock acquisition on read. In the same time, simultaneous access to these variable (threshold_timestamp and threshold_xid) should be protected with spinlock. I remove atomic for threshold_xid and add comments on mutex_threshold. PFA, v3. I -- Best regards, Maxim Orlov.
Commits
-
Remove some more "snapshot too old" vestiges.
- 9f0602539db4 17.0 landed
-
Remove the "snapshot too old" feature.
- f691f5b80a85 17.0 landed