Re: Synchronizing slots from primary to standby
От | Amit Kapila |
---|---|
Тема | Re: Synchronizing slots from primary to standby |
Дата | |
Msg-id | CAA4eK1JWs_=kMb9aKRgv0Pggo8qB84BHdjsb8Bnt4jgk1F2jMA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Synchronizing slots from primary to standby (Bertrand Drouvot <bertranddrouvot.pg@gmail.com>) |
Ответы |
Re: Synchronizing slots from primary to standby
Re: Synchronizing slots from primary to standby |
Список | pgsql-hackers |
On Mon, Apr 1, 2024 at 2:51 PM Bertrand Drouvot <bertranddrouvot.pg@gmail.com> wrote: > > Hi, > > On Mon, Apr 01, 2024 at 06:05:34AM +0000, Zhijie Hou (Fujitsu) wrote: > > On Monday, April 1, 2024 8:56 AM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote: > > Attach the V4 patch which includes the optimization to skip the decoding if > > the snapshot at the syncing restart_lsn is already serialized. It can avoid most > > of the duplicate decoding in my test, and I am doing some more tests locally. > > > > Thanks! > > 1 === > > Same comment as in [1]. > > In LogicalSlotAdvanceAndCheckReadynessForDecoding(), if we are synchronizing slots > then I think that we can skip: > > + /* > + * Wait for specified streaming replication standby servers (if any) > + * to confirm receipt of WAL up to moveto lsn. > + */ > + WaitForStandbyConfirmation(moveto); > > Indeed if we are dealing with synced slot then we know we're in RecoveryInProgress(). > > Then there is no need to call WaitForStandbyConfirmation() as it could go until > the RecoveryInProgress() in StandbySlotsHaveCaughtup() for nothing (as we already > know it). > Won't it will normally return from the first check in WaitForStandbyConfirmation() because standby_slot_names_config is not set on standby? > 2 === > > + { > + if (SnapBuildSnapshotExists(remote_slot->restart_lsn)) > + { > > That could call SnapBuildSnapshotExists() multiple times for the same > "restart_lsn" (for example in case of multiple remote slots to sync). > > What if the sync worker records the last lsn it asks for serialization (and > serialized ? Then we could check that value first before deciding to call (or not) > SnapBuildSnapshotExists() on it? > > It's not ideal because it would record "only the last one" but that would be > simple enough for now (currently there is only one sync worker so that scenario > is likely to happen). > Yeah, we could do that but I am not sure how much it can help. I guess we could do some tests to see if it helps. -- With Regards, Amit Kapila.
В списке pgsql-hackers по дате отправления: