On 2013-01-07 19:03:35 +0530, Amit Kapila wrote: > On Monday, January 07, 2013 6:30 PM Simon Riggs wrote: > > On 7 January 2013 12:39, Amit Kapila <amit.kap...@huawei.com> wrote: > > > > > So We can modify to change this in function LogStandbySnapshot as > > below: > > > running = GetRunningTransactionData(); > > > if (running->xcnt > 0) > > > LogCurrentRunningXacts(running); > > > > > > So this check will make sure that if there is no operation happening > > i.e. no > > > new running transaction, then no need to log running transaction > > snapshot > > > and hence further checkpoint operations will be skipped. > > > > > > Let me know if I am missing something? > > > > It's not the same test. The fact that nothing is running at that > > moment is not the same thing as saying nothing at all has run since > > last checkpoint. > > But isn't the functionality of LogStandbySnapshot() is to log "all running > xids" and "all current > AccessExclusiveLocks". For RunningTransactionLocks, WAL is avoided in > similar way.
The information that no transactions are currently running allows you to build a recovery snapshot, without that information the standby won't start answering queries. Now that doesn't matter if all standbys already have built a snapshot, but the primary cannot know that. Having to issue a checkpoint while ensuring transactions are running just to get a standby up doesn't seem like a good idea to me :) Greetings, Andres Freund -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers