Thread: Rebuild indexes
Hi Everyone, I've a kind of less inserts/mostly updates table, which we vacuum every half-hour. here is the output of vacuum analyze INFO: --Relation public.accounts-- INFO: Index accounts_u1: Pages 1498; Tuples 515: Deleted 179. CPU 0.00s/0.00u sec elapsed 0.00 sec. INFO: Index accounts_u2: Pages 2227; Tuples 515: Deleted 179. CPU 0.00s/0.00u sec elapsed 0.01 sec. INFO: Index accounts_u3: Pages 246; Tuples 515: Deleted 179. CPU 0.00s/0.00u sec elapsed 0.00 sec. however its indexes keeps growing on and on. After surfing the manuals for a while, i came to know that vacuum doesn't clears up dead tuples caused by updates. so i then decided to do reindex online, but that makes exclusive lock on table which would prevent writing on to tables. finally i'm at a point where i decided to do index swapping. for e.g. 1. create index accounts_u1_swap,accounts_u2_swap and accounts_u3_swap in addition to the original indexes 2. analyze table to update stats, so that the table knows about new indexes. 3. drop original indexes 4. i wish i had a rename index command to rename _swap to its original index name. now create indexes with original name 5. follow #2 and #3 (now drop _swap indexes) Is there a better way to do this. comments are appreciated. thanks -Shankar __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com
Shankar, > Is there a better way to do this. comments are > appreciated. No. This is one of the major features in 7.4; FSM and VACUUM will manage indexes as well. Until then, we all suffer .... BTW, the REINDEX command is transaction-safe. So if your database has "lull" periods, you can run it without worrying that any updates will get turned back. -- -Josh Berkus Aglio Database Solutions San Francisco
Shankar K <shan0075@yahoo.com> writes: > ... so i then decided to do reindex online, but > that makes exclusive lock on table which would prevent > writing on to tables. So does CREATE INDEX, so it's not clear what you're buying with all these pushups. > 2. analyze table to update stats, so that the table > knows about new indexes. You do not need to ANALYZE to get the system to notice new indexes. > 4. i wish i had a rename index command to rename _swap > to its original index name. You can rename indexes as if they were tables. regards, tom lane
thanks tom. i wasn't sure about create index taking exclusive locks on tables too. so i could as well reindex than doing the whole _swap mess during off-peak hrs. --- Tom Lane <tgl@sss.pgh.pa.us> wrote: > Shankar K <shan0075@yahoo.com> writes: > > ... so i then decided to do reindex online, but > > that makes exclusive lock on table which would > prevent > > writing on to tables. > > So does CREATE INDEX, so it's not clear what you're > buying with > all these pushups. > > > 2. analyze table to update stats, so that the > table > > knows about new indexes. > > You do not need to ANALYZE to get the system to > notice new indexes. > > > 4. i wish i had a rename index command to rename > _swap > > to its original index name. > > You can rename indexes as if they were tables. > > regards, tom lane > > ---------------------------(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 __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free, easy-to-use web site design software http://sitebuilder.yahoo.com