On Mon, 2008-09-15 at 13:13 +0100, Gregory Stark wrote:
> Simon Riggs <simon@2ndQuadrant.com> writes:
>
> > So passing xl_xmin from master to standby seems not necessary to me. The
> > standby's OldestXmin needs to be passed through to the master, not the
> > other way around so that WAL records for tuple removal are not
> > generated.
>
> I think most people were pretty leery of doing it that way because it means
> activity on the standby database can cause the master to bloat. The consensus
> seemed to be headed towards having WAL replay on the standby stall if it meets
> a tuple removal record for a tuple that's visible to a query running on it.
> Probably with a mechanism to configure a maximum amount of time it can be
> stalled before shooting those queries.
Well, my impression from all inputs is there is no single preferred
route. Any one of the approaches seems to have a possible objection,
depending upon the needs of the user. So I'm going to give options.
In any case it's not just a two horse race. There are other options,
favoured by some people, that you've not personally commented on in any
of your summaries (thats up to you, of course).
And "Standby causing master to bloat" is not such a big problem. It's no
different to running queries directly on the master. But please don't
take it that I don't see the problem or think it the best solution in
all cases.
Certainly, halting WAL replay for any length of time might mean it can
never catch up again, so that won't be acceptable for many cases.
-- Simon Riggs www.2ndQuadrant.comPostgreSQL Training, Services and Support