Search Postgresql Archives

Re: Index bloat of 4x

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I found this thread quite depressing because I had forgotten the VACUUM
FULL only reclaims totally empty pages.  I have applied the following
documentation patch to recommend periodic REINDEX, and backpatched to
8.2.X docs.  I also added some TODO items so hopefully at least we will
keep track of this limitation.

---------------------------------------------------------------------------

Ed L. wrote:
> On Thursday January 18 2007 6:07 am, Bill Moran wrote:
> > Right.  It doesn't _look_ that way from the graph, but that's
> > because I only graph total DB size.  I expect if I graphed
> > data and index size separately, it would be evident.
> 
> pg_total_relation_size() might give you what you want there.
> 
> > At this point, I'm going to assume that my question of, "Is
> > this 4x bloat strange enough to warrant further investigation"
> > is "no".  It seems like this amount of bloat isn't terribly
> > unusual, and that the people working on improving this sort of
> > thing already have enough examples of it.
> 
> I afraid I don't see how any of the answers I saw discussed fit a 
> 24x7 operation.  Reindex, drop index, vacuum full, ... they all 
> block production queries of one sort or another for significant 
> periods of time (minutes) on large (multi/tens of GB) tables, 
> and thus are infeasible for true 24x7 operations.  What it seems 
> we really need is something to remove the bloat without blocking 
> production DML queries, while under significant query load, with 
> very large tables.  This bloat issue is by far our biggest 
> headache on the DB side.
> 
> Ed
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster

-- 
  Bruce Momjian   bruce@xxxxxxxxxx
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +
Index: doc/src/sgml/maintenance.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/maintenance.sgml,v
retrieving revision 1.66
diff -c -c -r1.66 maintenance.sgml
*** doc/src/sgml/maintenance.sgml	16 Jan 2007 18:26:02 -0000	1.66
--- doc/src/sgml/maintenance.sgml	31 Jan 2007 04:12:07 -0000
***************
*** 615,623 ****
     for inefficient use of space: if all but a few index keys on a page have
     been deleted, the page remains allocated.  So a usage pattern in which all
     but a few keys in each range are eventually deleted will see poor use of
!    space.  The potential for bloat is not indefinite — at worst there
!    will be one key per page — but it may still be worthwhile to schedule
!    periodic reindexing for indexes that have such usage patterns.
    </para>
  
    <para>
--- 615,621 ----
     for inefficient use of space: if all but a few index keys on a page have
     been deleted, the page remains allocated.  So a usage pattern in which all
     but a few keys in each range are eventually deleted will see poor use of
!    space.  For such usage patterns, periodic reindexing is recommended.
    </para>
  
    <para>
Index: doc/src/sgml/ref/vacuum.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/vacuum.sgml,v
retrieving revision 1.45
diff -c -c -r1.45 vacuum.sgml
*** doc/src/sgml/ref/vacuum.sgml	27 Dec 2006 14:55:17 -0000	1.45
--- doc/src/sgml/ref/vacuum.sgml	31 Jan 2007 04:12:07 -0000
***************
*** 167,172 ****
--- 167,175 ----
      most of the rows in a table and would like the table to physically shrink
      to occupy less disk space.  <command>VACUUM FULL</command> will usually
      shrink the table more than a plain <command>VACUUM</command> would.
+     The <option>FULL</option> option does not shrink indexes; a periodic
+     <command>REINDEX</> is still recommended.  In fact, it is often faster
+     to drop all indexes, <command>VACUUM FULL</>, and recreate the indexes.
     </para>
  
     <para>

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux