Excerpts from Noah Misch's message of vie ene 20 22:33:30 -0300 2012: > On Fri, Jan 20, 2012 at 07:03:22PM -0500, Jaime Casanova wrote: > > On Wed, Jan 18, 2012 at 7:01 PM, Noah Misch <n...@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.
Hm. Leaf pages hold as much tuples as non-leaf pages, no? I mean for each page element there's a value and a CTID. In non-leaf those CTIDs point to other index pages, one level down the tree; in leaf pages they point to the heap. The metapage is special in that it is not used to store any user data, just a pointer to the root page. -- Álvaro Herrera <alvhe...@commandprompt.com> The PostgreSQL Company - Command Prompt, Inc. PostgreSQL Replication, Consulting, Custom Development, 24x7 support -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers