Re: index keeps on growing - Mailing list pgsql-admin

From Brian McCane
Subject Re: index keeps on growing
Date
Msg-id 20020619070147.P95221-100000@fw.mccons.net
Whole thread Raw
In response to index keeps on growing  (Jean-Christophe ARNU (JX) <jc.arnu@free.fr>)
Responses Re: index keeps on growing
List pgsql-admin
I have a perl script which rebuilds index files "hot".  It looks up the
pertinent information about the index you specify on a table or for ALL
indexes for a table.  It then builds a new index exactly like the one you
specify named "<index>_new".  After the index has been created, it removes
the original index and renames <index>_new to <index>.  Just so noone
thinks I am reckless, the perl script actually just creates a SQL
script of what work is to be done, and then the user has to feed the
commands to 'psql'.  I always run the program once and look at the
script that it wants to use.  Then, if I like what I see, I run the
program again and pipe the output to 'psql'.  I don't care how good
the program is, I prefer a manual inspection before I allow it to mess
with my database.

The perl script will allow you to rebuild your indexes (indices?) without
having to kick out all of your users.  It reclaims all of the "holes" in
the index files.  It does NOT preserve the "primary key" setting for an
index, because as far as I can tell this doesn't actually make any
difference, primary keys are just an UNIQUE index.  I have used it since
7.0.3, and it has worked fine for me, but I guarantee nothing about your
database (lawyers told me I have to say that ;).  The only caveat I can
think of is that it places a read lock on the table, so while you are
rebuilding the index noone can write to the table (I am not sure on this
might wanna ask Tom).

I will put this and a couple of other scripts that I have written for
maintenance on PostgreSQL on my anonymous FTP server.  They will be at:

ftp://china.maxbaud.net/pub/PostgreSQL/

BTW, the script also fixes triggers.  I had a problem once upon a time
where I did some tinkering with tables and their names, and when I was
done my triggers no longer pointed at the correct table.  The name in the
trigger definition was correct, but the oid (or whatever the field in
pg_trigger is), pointed to the old database oid.  So, the triggers all
failed to run.  I don't know if this is still possible, but it will still
fix it.

- brian


On Wed, 19 Jun 2002, Jean-Christophe ARNU wrote:

>
> Hello all,
>      I've a hard working pgsql db running on 7/7x365 server. Each night
> (when
>  activity is less intensive) I run vacuum and vacuum analyze on tables where
>  principal activity is performed.
>      Tables are cleaned (files sizes are decreasing), but indices files
> keeps on
>  growing in size....
>
>      I run PgSQL 7.1.3, I cannot upgrade (immediately) to 7.2.x... So what
> can I
>  do to keep these indices' size at a constant and reasonnable size?
>
>      Thanks a lot
>
>
> --
> Jean-Christophe ARNU
> s/w developer
> Paratronic France
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>

Wm. Brian McCane                    | Life is full of doors that won't open
Search http://recall.maxbaud.net/   | when you knock, equally spaced amid those
Usenet http://freenews.maxbaud.net/ | that open when you don't want them to.
Auction http://www.sellit-here.com/ | - Roger Zelazny "Blood of Amber"


pgsql-admin by date:

Previous
From: "Robson"
Date:
Subject: Urgent - Please, not found date
Next
From: Tom Lane
Date:
Subject: Re: index keeps on growing