Re: WIP: Avoid creation of the free space map for small tables
John Naylor <jcnaylor@gmail.com>
From: John Naylor <jcnaylor@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Amit Kapila <amit.kapila16@gmail.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2018-11-05T09:28:17Z
Lists: pgsql-hackers
On 11/2/18, Tom Lane <tgl@sss.pgh.pa.us> wrote: > On a FSM-less table, I'd be inclined to just check the > last page and then grow the table if the tuple doesn't fit there. > This would, in many cases, soon result in a FSM being created, but > I think that's just fine. The point of the change is to optimize > for cases where a table *never* gets more than a few inserts. Not, IMO, > for cases where a table gets a lot of churn but never has a whole lot of > live tuples. In the latter scenario we are far better off having a FSM. and... On 11/2/18, Robert Haas <robertmhaas@gmail.com> wrote: > Just checking the last page of the table doesn't sound like a good > idea to me. I think that will just lead to a lot of stupid bloat. It > seems likely that checking every page of the table is fine for npages > <= 3, and that would still be win in a very significant number of > cases, I see the merit of both of these arguments, and it occurred to me that there is middle ground between checking only the last page and checking every page: Check the last 3 pages and set the threshold to 6. That way, with npages <= 3, every page will be checked. In the unlikely case that npages = 6 and the first 3 pages are all wasted space, that's the amount of space that would have gone to the FSM anyway, and the relation will likely grow beyond the threshold soon, at which point the free space will become visible again. -John Naylor
Commits
-
Improve code comments in b0eaa4c51b.
- 06c8a5090ed9 12.0 landed
-
During pg_upgrade, conditionally skip transfer of FSMs.
- 13e8643bfc29 12.0 landed
-
Add more tests for FSM.
- 6f918159a97a 12.0 landed
-
Doc: Update the documentation for FSM behavior for small tables.
- 29d108cdecbe 12.0 landed
-
Make FSM test portable.
- 08ecdfe7e5e0 12.0 landed
-
Avoid creation of the free space map for small heap relations, take 2.
- b0eaa4c51bbf 12.0 landed
-
Move page initialization from RelationAddExtraBlocks() to use, take 2.
- 0d1fe9f74e36 12.0 cited
-
Avoid creation of the free space map for small heap relations.
- ac88d2962a96 12.0 landed
-
In bootstrap mode, don't allow the creation of files if they don't already
- d66e3664b8ba 12.0 landed