Re: Speedup of relation deletes during recovery

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: Speedup of relation deletes during recovery
Дата
Msg-id 20180615182834.zmvvrybuptwba3na@alap3.anarazel.de
обсуждение исходный текст
Ответ на Re: Speedup of relation deletes during recovery  (Andres Freund <andres@anarazel.de>)
Ответы Re: Speedup of relation deletes during recovery  (Fujii Masao <masao.fujii@gmail.com>)
Список pgsql-hackers
Hi,

On 2018-06-15 10:45:04 -0700, Andres Freund wrote:
> > +
> > +    srels = palloc(sizeof(SMgrRelation) * ndelrels);
> >      for (i = 0; i < ndelrels; i++)
> > -    {
> > -        SMgrRelation srel = smgropen(delrels[i], InvalidBackendId);
> > +        srels[i] = smgropen(delrels[i], InvalidBackendId);
> >  
> > -        smgrdounlink(srel, false);
> > -        smgrclose(srel);
> > -    }
> > +    smgrdounlinkall(srels, ndelrels, false);
> > +
> > +    for (i = 0; i < ndelrels; i++)
> > +        smgrclose(srels[i]);
> > +    pfree(srels);

Hm. This will probably cause another complexity issue. If we just
smgropen() the relation will be unowned. Which means smgrclose() will
call remove_from_unowned_list(), which is O(open-relations). Which means
this change afaict creates a new O(ndrels^2) behaviour?

It seems like the easiest fix for that would be to have a local
SMgrRelationData in that loop, that we assign the relations to?  That's
a bit hacky, but afaict should work?

Greetings,

Andres Freund


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Geoghegan
Дата:
Сообщение: Removing "Included attributes in B-tree indexes" section from docs
Следующее
От: Amit Khandekar
Дата:
Сообщение: Re: AtEOXact_ApplyLauncher() and subtransactions