Thread: Indexes growing continuously
Hi, I'm running PostgreSQL 6.5.3 on Linux-2.2.12 on a 2-way SMP machine. I noticed that even after VACUUMing there are some indexes that still remain very big. For example, here's what I found for pg_attribute: -rw------- 1 postgres postgres 122880 Apr 4 15:24 pg_attribute -rw------- 1 postgres postgres 17055744 Apr 4 15:24 pg_attribute_attrelid_index -rw------- 1 postgres postgres 50176000 Apr 4 15:24 pg_attribute_relid_attnam_index -rw------- 1 postgres postgres 20758528 Apr 4 15:24 pg_attribute_relid_attnum_index I know I can fix this by recreating the indexes, but I don't know how to do it for a system table and if it's safe. Any hints ? TIA. Regards.
Daniele Orlandi wrote: > > Hi, > > I'm running PostgreSQL 6.5.3 on Linux-2.2.12 on a 2-way SMP machine. > I noticed that even after VACUUMing there are some indexes that still > remain very big. > > For example, here's what I found for pg_attribute: > > -rw------- 1 postgres postgres 122880 Apr 4 15:24 pg_attribute > -rw------- 1 postgres postgres 17055744 Apr 4 15:24 > pg_attribute_attrelid_index > -rw------- 1 postgres postgres 50176000 Apr 4 15:24 > pg_attribute_relid_attnam_index > -rw------- 1 postgres postgres 20758528 Apr 4 15:24 > pg_attribute_relid_attnum_index > > I know I can fix this by recreating the indexes, but I don't know how to > do it for a system table and if it's safe. > > Any hints ? Unfortunately, this is a bug in PostgreSQL with respect to system indexes. You can safely drop/create user indexes, but not system ones. The only way to reclaim the space used is to dump/reload your database. Under 7.0, I *believe* Hiroshi's REINDEX command (please correct me someone if I'm wrong) will allow you to reconstruct system indexes, but the root problem still exists... Hope that helps, Mike Mascari
> > I know I can fix this by recreating the indexes, but I don't know how to > > do it for a system table and if it's safe. > > > > Any hints ? > > Unfortunately, this is a bug in PostgreSQL with respect to system > indexes. You can safely drop/create user indexes, but not system > ones. The only way to reclaim the space used is to dump/reload > your database. Under 7.0, I *believe* Hiroshi's REINDEX command > (please correct me someone if I'm wrong) will allow you to > reconstruct system indexes, but the root problem still exists... pg_upgrade will allow this, without dump/reload of data. -- Bruce Momjian | http://www.op.net/~candle pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026