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_indexI 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, Pennsylvania 19026