On Thu, Mar 18, 2021 at 5:30 PM Matthias van de Meent <
boekewurm+postg...@gmail.com> wrote:
>
> > +     * The minimum space on a page for it to be considered "empty"
regardless
> > +     * of fillfactor. We base this on MaxHeapTupleSize, minus a small
amount
> > +     * of slack. We allow slack equal to 1/8 the maximum space that
could be
> > +     * taken by line pointers, which is somewhat arbitrary.
>
> > +     * We want to allow inserting a large tuple into an empty page
even if
> > +     * that would violate the fillfactor. Otherwise, we would
unnecessarily
> > +     * extend the relation. Instead, ask the FSM for
maxPaddedFsmRequest
> > +     * bytes. This will allow it to return a page that is not quite
empty
> > +     * because of unused line pointers
>
> How about
>
> +    * Because pages that have no items left can still have space
allocated
> +    * to item pointers, we consider pages "empty" for FSM requests when
they
> +    * have at most 1/8 of their MaxHeapTuplesPerPage item pointers' space
> +    * allocated. This is a somewhat arbitrary number, but should prevent
> +    * most unnecessary relation extensions due to not finding "empty"
pages
> +    * while inserting combinations of large tuples with low fillfactors.
>
> +    * When the free space to be requested from the FSM is greater than
> +    * maxPaddedFsmRequest, this is considered equivalent to requesting
> +    * insertion on an "empty" page, so instead of failing to find a page
> +    * with more empty space than an "empty" page and extend the relation,
> +    * we try to find a page which is considered "emtpy".
>
> This is slightly more verbose, but I think this clarifies the
> reasoning why we need this a bit better. Feel free to reject or adapt
> as needed.

I like this in general, but still has some rough edges. I've made another
attempt in v5 incorporating your suggestions. Let me know what you think.

--
John Naylor
EDB: http://www.enterprisedb.com

Attachment: v5-0001-Fix-bug-in-heap-space-management-that-was-overly-.patch
Description: Binary data

Reply via email to