Re: Physical append-only tables - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: Physical append-only tables
Date
Msg-id CABUevEyW_4XDr37OSHyYDAop4MF=8gb48Dpy4HcH8Jn_hAryhQ@mail.gmail.com
Whole thread Raw
In response to Re: Physical append-only tables  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Physical append-only tables
List pgsql-hackers
On Mon, Nov 14, 2016 at 2:35 AM, Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
Magnus Hagander wrote:

> But then consider the same table. Except rows are typically updated once or
> twice when they are new, and *then* go read only. And we also have a
> process that at some point deletes *some* old rows (but not all - in fact,
> only a small portion).
>
> In this case, the next INSERT once VACUUM has run is likely to stick a
> "new" row somewhere very "far back" in the table, since there is now free
> space there. This more or less completely ruins the BRIN index usability,
> as the "old" blocks will now contain a single row from a "new" series.

Yeah.  When we initially discussed BRIN, there was a mention of allowing
a BRIN index to guide new tuple location -- something like
auto-clustering, if you will.  We haven't discussed the exact details
but I think something along those lines is worth considering.

What I'm talking about is something that would be a lot simpler than auto-clustering. I'm not even talking about trying to detect if the row was about to go into the right place -- this might be expensive and certainly more complicated. I'm only talking about a simple case where we *never* put anything anywhere other than at the end of the table, period. That should make the check both cheap and simple. 

--

pgsql-hackers by date:

Previous
From: valeriof
Date:
Subject: Re: Transaction user id through logical decoding
Next
From: Tom Lane
Date:
Subject: Re: Physical append-only tables