pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Greg Smith <gsmith@gregsmith.com>
To: pgsql-performance@postgresql.org
Subject: Measuring table and index bloat
Date: Sat, 8 Dec 2007 02:06:46 -0500 (EST)
Message-ID: <Pine.GSO.4.64.0712080127420.5116@westnet.com> (raw)

One of those things that comes up regularly on this list in particular are 
people whose performance issues relate to "bloated" tables or indexes. 
What I've always found curious is that I've never seen a good way 
suggested to actually measure said bloat in any useful numeric 
terms--until today.

Greg Sabino Mullane just released a Nagios plug-in for PostgreSQL that you 
can grab at http://bucardo.org/nagios_postgres/ , and while that is itself 
nice the thing I found most remarkable is the bloat check.  The majority 
of that code is an impressive bit of SQL that anyone could use even if you 
have no interest in Nagios, which is why I point it out for broader 
attention.  Look in check_postgres.pl for the "check_bloat" routine and 
the big statement starting at the aptly labled "This was fun to write" 
section.  If you pull that out of there and replace $MINPAGES and 
$MINIPAGES near the end with real values, you can pop that into a 
standalone query and execute it directly.  Results look something like 
this (reformatting for e-mail):

schemaname | tablename | reltuples | relpages | otta  | tbloat | 
public     | accounts  |   2500000 |    41667 | 40382 |    1.0 |

wastedpages | wastedbytes | wastedsize |      iname      | ituples |
        1285 |    10526720 | 10 MB      | accounts_pkey   | 2500000 |

ipages | iotta | ibloat | wastedipages | wastedibytes | wastedisize
   5594 | 35488 |    0.2 |            0 |            0 | 0 bytes

I'd be curious to hear from those of you who have struggled with this 
class of problem in the past as to whether you feel this quantifies the 
issue usefully.

--
* Greg Smith gsmith@gregsmith.com http://www.gregsmith.com Baltimore, MD



view thread (2+ messages)  latest in thread

Message-ID: <Pine.GSO.4.64.0712080127420.5116@westnet.com>
Permalink:  ../Pine.GSO.4.64.0712080127420.5116@westnet.com/
Also on:    postgresql.org/message-id/Pine.GSO.4.64.0712080127420.5116@westnet.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: gsmith@gregsmith.com
  Subject: Re: Measuring table and index bloat
  In-Reply-To: <Pine.GSO.4.64.0712080127420.5116@westnet.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox