Re: Measuring relation free space
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Jaime Casanova <jaime@2ndquadrant.com>
Cc: Bernd Helmle <mailings@oopsware.de>, Greg Smith <greg@2ndquadrant.com>, pgsql-hackers@postgresql.org
Date: 2012-01-21T01:33:30Z
Lists: pgsql-hackers
On Fri, Jan 20, 2012 at 07:03:22PM -0500, Jaime Casanova wrote: > On Wed, Jan 18, 2012 at 7:01 PM, Noah Misch <noah@leadboat.com> wrote: > > On Wed, Jan 18, 2012 at 09:46:20AM -0500, Jaime Casanova wrote: > >> > >> ignoring all non-leaf pages still gives a considerable difference > >> between pgstattuple and relation_free_space() > > > > pgstattuple() counts the single B-tree meta page as always-full, while > > relation_free_space() skips it for all purposes. ?For tiny indexes, that can > > shift the percentage dramatically. > > > > ok, i will reformulate the question. why is fine ignoring non-leaf > pages but is not fine to ignore the meta page? pgstattuple() figures the free_percent by adding up all space available to hold tuples and dividing that by the simple size of the relation. Non-leaf pages and the meta page get identical treatment: both never hold tuples, so they do not contribute to the free space.