On 9/18/07, Tom Lane <[EMAIL PROTECTED]> wrote:
> * I'm still pretty unhappy about the patch's use of a relcache copy of
> GetAvgFSMRequestSize()'s result.  The fact that there's no provision for
> ever updating the value while the relcache entry lives is part of it,
> but the bigger part is that I'd rather not have anything at all
> depending on that number.

We could fix the first part by adding relcache invalidation whenever
the average FSM request size changes by a certain margin. But
I am not insisting on using the avgFSM mechanism to decide when
to prune.

Perhaps we could
> replace that heuristic with something that is page-local; seems like
> dividing the total used space by the number of item pointers would give
> at least a rough approximation of the page's average tuple size.
We might get it completely wrong unless we know the number of
normal line pointers (redirected, dead and unused line pointers
do not take any real storage).

Another option would be to prune whenever the free space goes
below table fillfactor and hope that users would set fillfactor so that
atleast one updated tuple can fit in the block. I know its not best to
rely on the users though. But it can be good hint.

Yet another option would be to set a hint on the page whenever we
fail to do HOT update because of not-enough-free-space in the
block. Next time we shall prune and so the subsequent updates
would be HOT update.

None of these are perfect though.


Pavan Deolasee
EnterpriseDB     http://www.enterprisedb.com

Reply via email to