Re: Logical Replication of sequences
vignesh C <vignesh21@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Doc: Add documentation for sequence synchronization.
- 55cefadde874 19 (unreleased) landed
-
Remove unused assignment in CREATE PUBLICATION grammar.
- bfb7419b0bbe 19 (unreleased) landed
-
Add seq_sync_error_count to subscription statistics.
- f6a4c498dcf6 19 (unreleased) landed
-
Fix few issues in commit 5509055d69.
- 5a4eba558aa7 19 (unreleased) landed
-
Add sequence synchronization for logical replication.
- 5509055d6956 19 (unreleased) landed
-
Add worker type argument to logical replication worker functions.
- 3e8e05596a02 19 (unreleased) landed
-
Introduce "REFRESH SEQUENCES" for subscriptions.
- f0b3573c3aac 19 (unreleased) landed
-
Refactor logical worker synchronization code into a separate file.
- 41c674d2e31e 19 (unreleased) landed
-
Standardize use of REFRESH PUBLICATION in code and messages.
- 2436b8c047ff 19 (unreleased) landed
-
Add "ALL SEQUENCES" support to publications.
- 96b378497346 19 (unreleased) landed
-
Expose sequence page LSN via pg_get_sequence_data.
- b93172ca59f4 19 (unreleased) landed
-
Resume conflict-relevant data retention automatically.
- 0d48d393d465 19 (unreleased) cited
-
Post-commit review fixes for 228c370868.
- 1f7e9ba3ac4e 19 (unreleased) cited
-
Generate GUC tables from .dat file
- 63599896545c 19 (unreleased) cited
Attachments
- sequence_perf.txt (text/plain)
- 0001-Performance-testing-changes.patch (application/x-patch) patch 0001
On Sat, 20 Jul 2024 at 20:48, vignesh C <vignesh21@gmail.com> wrote: > > On Fri, 12 Jul 2024 at 08:22, Peter Smith <smithpb2250@gmail.com> wrote: > > > > Hi Vignesh. Here are the rest of my comments for patch v20240705-0003. > > ====== > > > > 8. logicalrep_sequence_sync_worker_find > > > > +/* > > + * Walks the workers array and searches for one that matches given > > + * subscription id. > > + * > > + * We are only interested in the sequence sync worker. > > + */ > > +LogicalRepWorker * > > +logicalrep_sequence_sync_worker_find(Oid subid, bool only_running) > > > > There are other similar functions for walking the workers array to > > search for a worker. Instead of having different functions for > > different cases, wouldn't it be cleaner to combine these into a single > > function, where you pass a parameter (e.g. a mask of worker types that > > you are interested in finding)? This is fixed in the v20240730_2 version attached at [1]. > > 17. > > Also, where does the number 100 come from? Why not 1000? Why not 10? > > Why have batching at all? Maybe there should be some comment to > > describe the reason and the chosen value. I had run some tests with 10/100 and 1000 sequences per batch for 10000 sequences. The results for it: 10 per batch - 4.94 seconds 100 per batch - 4.87 seconds 1000 per batch - 4.53 seconds There is not much time difference between each of them. Currently, it is set to 100, which seems fine since it will not generate a lot of transactions. Additionally, the locks on the sequences will be periodically released during the commit transaction. I had used the test from the attached patch by changing max_sequences_sync_per_batch to 10/100/100 in 035_sequences.pl to verify this. [1] - https://www.postgresql.org/message-id/CALDaNm3%2BXzHAbgyn8gmbBLK5goyv_uyGgHEsTQxRZ8bVk6nAEg%40mail.gmail.com Regards, Vignesh