Philip Warner <pjw@rhyme.com.au> writes:
> Am I correct in saying that the FSM now tracks the entire table, and that
> the FSM parameters just determine how much is stored in memory?
No. Any free space that can't be remembered in FSM is lost to use.
(Not completely --- an update of a row on the same page can reuse it ---
but for the most part you want to make FSM large enough to remember all
the useful free space.)
> Is any type of opportunistic locking likely/planned for a future version
> (ie. a has lock, b asks for conflicting lock, c asks for lock that is OK
> with a but denied by b; so c's lock is allowed and b stays waiting).
That's deliberately disallowed by the current logic because of the risk
of starving b indefinitely. IIRC it would be a trivial code change to
do the other, but I doubt it's a good idea. The typical situation is
exactly a VACUUM that wants an exclusive lock, versus a fairly
continuous stream of shared lock requests for select/insert/update/delete.
regards, tom lane