Re: [SQL] Deleting indexes before vacuum?
От | Tom Lane |
---|---|
Тема | Re: [SQL] Deleting indexes before vacuum? |
Дата | |
Msg-id | 7175.943117272@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: [SQL] Deleting indexes before vacuum? (Oleg Bartunov <oleg@sai.msu.su>) |
Ответы |
Re: [SQL] Deleting indexes before vacuum?
RE: [SQL] Deleting indexes before vacuum? |
Список | pgsql-sql |
Oleg Bartunov <oleg@sai.msu.su> writes: > The question is: what's the right way to do drop index/vacuum/create ? > Do I need transaction ? VACUUM should not be run inside a transaction block. (I am planning to make the code enforce this for 7.0, but it doesn't yet.) So you can't protect the whole sequence with a transaction. AFAICS the only real problem is that if you are depending on UNIQUE indexes to catch attempts to insert duplicate data, an insertion that got in between the drop and recreate wouldn't get checked. I have been toying with the notion of ripping out the existing VACUUM index handling code and putting in fresh code that would simply do an index drop and rebuild ;-). This could happen inside VACUUM's exclusive lock on the table, so it'd be perfectly safe whereas doing it the manual way is not. But I do not want to do this unless Vadim approves it as a good idea --- perhaps the existing index-vacuuming code can be fixed to be an even better solution than this. I haven't looked at the code to understand why it's so slow or whether there's a way to make it better. regards, tom lane
В списке pgsql-sql по дате отправления: