Re: REINDEX CONCURRENTLY 2.0
От | Michael Paquier |
---|---|
Тема | Re: REINDEX CONCURRENTLY 2.0 |
Дата | |
Msg-id | CAB7nPqTZfx20Ra2Wf4Gm0a=NqF4q2aC8Q6OS8vKN6fhnD=cUxQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: REINDEX CONCURRENTLY 2.0 (Jim Nasby <jim@nasby.net>) |
Ответы |
Re: REINDEX CONCURRENTLY 2.0
|
Список | pgsql-hackers |
Hi, Thanks for your comments. On Fri, Jan 10, 2014 at 9:59 AM, Jim Nasby <jim@nasby.net> wrote: > Sorry for the lateness of this... > > On 11/14/13, 8:40 PM, Michael Paquier wrote: >> >> + /* >> + * Phase 4 of REINDEX CONCURRENTLY >> + * >> + * Now that the concurrent indexes have been validated could be >> used, >> + * we need to swap each concurrent index with its corresponding >> old index. >> + * Note that the concurrent index used for swaping is not marked >> as valid >> + * because we need to keep the former index and the concurrent >> index with >> + * a different valid status to avoid an implosion in the number of >> indexes >> + * a parent relation could have if this operation fails multiple >> times in >> + * a row due to a reason or another. Note that we already know >> thanks to >> + * validation step that >> + */ >> + > > > Was there supposed to be more to that comment? Not really, it seems that this chunk came out after writing multiple successive versions of this patch. > In the loop right below it... > > + /* Swap the indexes and mark the indexes that have the old data as > invalid */ > + forboth(lc, indexIds, lc2, concurrentIndexIds) > ... > + CacheInvalidateRelcacheByRelid(relOid); > > Do we actually need to invalidate the cache on each case? Is it because > we're grabbing a new transaction each time through? This is to force a refresh of the cached plans that have been using the old index before transaction of step 4 began. I have realigned this patch with latest head (d2458e3)... In case someone is interested at some point... Regards, -- Michael
Вложения
В списке pgsql-hackers по дате отправления: