Re: unbalanced indexes -> fixed via dump/restore?
От | Alfred Perlstein |
---|---|
Тема | Re: unbalanced indexes -> fixed via dump/restore? |
Дата | |
Msg-id | 20010308170841.G18351@fw.wintelcom.net обсуждение исходный текст |
Ответ на | Re: unbalanced indexes -> fixed via dump/restore? (Hiroshi Inoue <Inoue@tpf.co.jp>) |
Список | pgsql-general |
* Hiroshi Inoue <Inoue@tpf.co.jp> [010308 17:07] wrote: > Tom Lane wrote: > > > > Alfred Perlstein <bright@wintelcom.net> writes: > > > * Tom Lane <tgl@sss.pgh.pa.us> [010307 14:30] wrote: > > >> Plain old DROP INDEX / CREATE INDEX is probably the best-trodden path. > > >> Your (A) seems like vastly more work than is needed. (B) might be > > >> marginally easier than DROP/CREATE, but I'm not sure how much I trust > > >> REINDEX; it's not been around all that long. > > > > > Is there a way to do this atomically, meaning so that no one can > > > get at the table after dropping, but before recreating the index? > > > > In 7.1 it should work to do > > > > begin; > > drop index fooi; > > create index fooi on foo (...); > > end; > > > > The DROP acquires an exclusive lock on foo, so there's no need for > > an explicit "lock table foo", though you can add one if it seems > > clearer that way. > > > > Before 7.1 this is too risky, because if the create index fails for > > some reason, you're hosed (the attempted rollback of DROP will screw up). > > > > btw, REINDEX essentially does the same thing as the above, > > Yes REINDEX is safe under postmaster in 7.1. > In addtion REINDEX has some advantages. > 1) no necessity to scatter the index definition. > 2) it doesn't change any reference among system objects. > > > but there's > > a lot of strange additional locking code in it,which I don't trust > > much... call it a design disagreement with Hiroshi ;-) > > > > Is it LockClassForUpdate() ? If so it's never a special function. > It's only implementing a 'FOR UPDATE' part of 'SELECT .. FROM PG_CLASS' > and 'select .. for update' before 'update ..' is an oridinary > sequence of update operations. Is there a way to do this under 7.0.3? -- -Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
В списке pgsql-general по дате отправления: