Re: Unhappy about API changes in the no-fsm-for-small-rels patch
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Robert Haas <robertmhaas@gmail.com>, John Naylor <john.naylor@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2019-05-07T16:06:56Z
Lists: pgsql-hackers
Hi, On 2019-05-07 12:04:11 -0400, Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2019-05-07 09:34:42 -0400, Tom Lane wrote: > >> I'm inclined to wonder why bother with invals at all. > > > But when updating the free space for the first four blocks, we're going > > to either have to do an smgrexists() to check whether somebody > > concurrently created the FSM, or we might not update an existing FSM. An > > inval seems much better. > > I do not think sinval messaging is going to be sufficient to avoid that > problem. sinval is only useful to tell you about changes if you first > take a lock strong enough to guarantee that no interesting change is > happening while you hold the lock. We are certainly not going to let > writes take an exclusive lock, so I don't see how we could be certain > that we've seen an sinval message telling us about FSM status change. Sure, but it'll be pretty darn close, rather than there basically not being any limit except backend lifetime to how long we might not notice that we'd need to switch to the on-disk FSM. > This seems tied into the idea we've occasionally speculated about > of tracking relation sizes in shared memory to avoid lseek calls. > If we could solve the problems around that, it'd provide a cheap(er) > way to detect whether an FSM should exist or not. I'm back on working on a patch that provides that, FWIW. Not yet really spending time on it, but I've re-skimmed through the code I'd previously written. Greetings, Andres Freund
Commits
-
Revert "Avoid the creation of the free space map for small heap relations".
- 7db0cde6b58e 12.0 landed
-
Improve code comments in b0eaa4c51b.
- 06c8a5090ed9 12.0 cited
-
During pg_upgrade, conditionally skip transfer of FSMs.
- 13e8643bfc29 12.0 cited
-
Add more tests for FSM.
- 6f918159a97a 12.0 cited
-
Fix typos in commit 8586bf7ed8.
- a6e48da08844 12.0 cited
-
tableam: introduce table AM infrastructure.
- 8586bf7ed888 12.0 cited
-
Clear the local map when not used.
- 9c32e4c35026 12.0 cited
-
Doc: Update the documentation for FSM behavior for small tables.
- 29d108cdecbe 12.0 cited
-
Make FSM test portable.
- 08ecdfe7e5e0 12.0 cited
-
Avoid creation of the free space map for small heap relations, take 2.
- b0eaa4c51bbf 12.0 cited