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: John Naylor <john.naylor@2ndquadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Andres Freund <andres@anarazel.de>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-04-19T02:37:59Z
Lists: pgsql-hackers
On Thu, Apr 18, 2019 at 2:10 PM John Naylor <john.naylor@2ndquadrant.com> wrote:
>
> On Thu, Apr 18, 2019 at 2:48 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
> > I respect and will follow whatever will be the consensus after
> > discussion.  However, I request you to wait for some time to let the
> > discussion conclude.  If we can't get to an
> > agreement or one of John or me can't implement what is decided, then
> > we can anyway revert it.
>
> Agreed. I suspect the most realistic way to address most of the
> objections in a short amount of time would be to:
>
> 1. rip out the local map
> 2. restore hio.c to only checking the last block in the relation if
> there is no FSM (and lower the threshold to reduce wasted space)
> 3. reduce calls to smgr_exists()
>

Won't you need an extra call to RelationGetNumberofBlocks to find the
last block?  Also won't it be less efficient in terms of dealing with
bloat as compare to current patch?  I think if we go this route, then
we might need to revisit it in the future to optimize it, but maybe
that is the best alternative as of now.

I am thinking that we should at least give it a try to move the map to
rel cache level to see how easy or difficult it is and also let's wait
for a day or two to see if Andres/Tom has to say anything about this
or on the response by me above to improve the current patch.

-- 
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.