Re: COPY Fillfactor patch - Mailing list pgsql-patches

From Tom Lane
Subject Re: COPY Fillfactor patch
Date
Msg-id 23677.1114004575@sss.pgh.pa.us
Whole thread Raw
In response to Re: COPY Fillfactor patch  (Simon Riggs <simon@2ndquadrant.com>)
Responses Re: COPY Fillfactor patch
Re: COPY Fillfactor patch
List pgsql-patches
Simon Riggs <simon@2ndquadrant.com> writes:
> On Wed, 2005-04-20 at 09:03 -0400, Bruce Momjian wrote:
>> My guess is that the FILLFACTOR will actually be a GUC variable rather
>> than a clause to CREATE INDEX or REINDEX or CLUSTER.

> I hope not, but it would be easier to set like that and a lot easier to
> code up that way.

I don't like that either.  It seems highly unlikely that every table in
a database would need the same fillfactor.  It should be a per-table
attribute, maybe with a DB-wide default, much like we handle per-column
statistics targets.

My thought about this is that the case where extra free space really
helps is UPDATE: if heap_update can put the new tuple version on the
same page where the old one is, there's a noticeable savings.  So what
you'd probably want is that heap_insert respects fillfactor (ie, won't
eat the last fillfactor percent of a page) but heap_update doesn't,
if it can thereby put the update on the same page.  As long as you
vacuum before a particular page is entirely filled by updates of its
own tuples, you have a steady-state situation.

I don't see a lot of point in Hannu's suggestion about leaving every Nth
page free.  Once you've had to move off the source page, near or far
makes little difference.  It might win if we were also trying to teach
insert and update to preserve CLUSTER ordering --- but that is an order
of magnitude harder than what's been discussed in this thread, and I'm
unconvinced it's a good idea anyway ...

            regards, tom lane

pgsql-patches by date:

Previous
From: Simon Riggs
Date:
Subject: Re: COPY Fillfactor patch
Next
From: Bruce Momjian
Date:
Subject: Re: COPY Fillfactor patch