Re: Timeline following for logical slots

From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Petr Jelinek <petr(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Timeline following for logical slots
Date: 2016-04-04 06:36:29
Message-ID: CAMsr+YEq7-u4y7r5uGYLJnoYouUvfeLRiwBWxbPj8GaJ=76oWg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 4 April 2016 at 14:30, Andres Freund <andres(at)anarazel(dot)de> wrote:

> On 2016-04-04 14:24:52 +0800, Craig Ringer wrote:
> > I don't feel like I've grasped this properly yet. I think it's referring
> to
> > the pg_logical/snapshots/ serialization, the use of which allows us to
> > avoid doing extra work in SnapBuildFindSnapshot(...), but doesn't seem to
> > be crucial for correct function. After all, decoding still restarts at
> the
> > restart_lsn and feeds relevant xact info into the snapshot builder,
> > accumulates invalidation information, etc.
>
> restart_lsn is set to the last known point where a) all changes for
> ongoing transactions are available b) we can re-build visiblity
> information when we start reading from there.
>
> As we essentially can only start determining visibility information
> whenever processing a xl_running_xacts record. Building visibility
> information means that there has to be a xl_running_xacts to start
> from. To build full visibility information we also have to wait till we
> have seen all in-progress transactions finish. So we dump visibility
> information every now and then, so we can re-use the information we'd
> already assembled.
>

OK, makes sense. And still resume decoding from restart_lsn, despite having
that visibility information stashed, because we also have to rebuild the
information on invalidations for running xacts, which is not stored
persistently anywhere as decoding progresses. So for now at least it's an
optimisation to store the visibility info, since we still have go go back
and decode for invalidations anyway. Right?

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2016-04-04 06:39:17 Re: Timeline following for logical slots
Previous Message Simon Riggs 2016-04-04 06:31:46 Re: pgsql: Avoid archiving XLOG_RUNNING_XACTS on idle server