Re: Unhappy about API changes in the no-fsm-for-small-rels patch

Amit Kapila <amit.kapila16@gmail.com>

From: Amit Kapila <amit.kapila16@gmail.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: John Naylor <john.naylor@2ndquadrant.com>, Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-05-01T03:43:18Z
Lists: pgsql-hackers
On Tue, Apr 30, 2019 at 7:52 PM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
>
> On 2019-Apr-30, John Naylor wrote:
>
> > On Fri, Apr 26, 2019 at 11:52 AM Amit Kapila <amit.kapila16@gmail.com> wrote:
> > > As discussed above, we need to issue an
> > > invalidation for following points:  (a) when vacuum finds there is no
> > > FSM and page has more space now, I think you can detect this in
> > > RecordPageWithFreeSpace
> >
> > I took a brief look and we'd have to know how much space was there
> > before. That doesn't seem possible without first implementing the idea
> > to save free space locally in the same way the FSM does. Even if we
> > have consensus on that, there's no code for it, and we're running out
> > of time.
>
> Hmm ... so, if vacuum runs and frees up any space from any of the pages,
> then it should send out an invalidation -- it doesn't matter what the
> FSM had, just that there is more free space now.  That means every other
> process will need to determine a fresh FSM,
>

I think you intend to say the local space map because once FSM is
created we will send invalidation and we won't further build relcache
entry having local space map.

> but that seems correct.
> Sounds better than keeping outdated entries indicating no-space-available.
>

Agreed, but as mentioned in one of the above emails, I am also bit
scared that it should not lead to many invalidation messages for small
relations, so may be we should send the invalidation message only when
the entire page is empty.

-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com



Commits

  1. Revert "Avoid the creation of the free space map for small heap relations".

  2. Improve code comments in b0eaa4c51b.

  3. During pg_upgrade, conditionally skip transfer of FSMs.

  4. Add more tests for FSM.

  5. Fix typos in commit 8586bf7ed8.

  6. tableam: introduce table AM infrastructure.

  7. Clear the local map when not used.

  8. Doc: Update the documentation for FSM behavior for small tables.

  9. Make FSM test portable.

  10. Avoid creation of the free space map for small heap relations, take 2.