Re: Autovacuum improvements

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Autovacuum improvements
Дата
Msg-id 15470.1168874844@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Autovacuum improvements  (Alvaro Herrera <alvherre@commandprompt.com>)
Ответы Re: Autovacuum improvements  (Alvaro Herrera <alvherre@commandprompt.com>)
Список pgsql-hackers
Alvaro Herrera <alvherre@commandprompt.com> writes:
> I'm cooking a patch for this which seems pretty reasonable, but I'm
> having a problem: what mechanism do we have for waiting until a process
> exits?

None, and I think you probably don't want to sit on the database lock
while waiting, either.  I was envisioning a simple sleep loop, viz
for(;;){    acquire database lock;    foreach(PGPROC entry in that database)    {        if (it's autovac)
sendsigint;        else            fail;    }    if (found any autovacs)    {        release database lock;
sleep(100msor so);        /* loop back and try again */    }    else        break;}
 

Also see Peter's nearby suggestion that we ought to wait instead of fail
for *all* cases of somebody attached to the database.  This would adapt
readily enough to that.

I was complaining elsewhere that I didn't want to use a sleep loop
for fixing the fsync-synchronization issue, but CREATE/DROP DATABASE
seems a much heavier-weight operation, so I don't feel that a sleep
is inappropriate here.

> Maybe make autovacuum acquire an LWLock at start, which it then
> keeps until it's gone, but it seems wasteful to have a lwlock just for
> that purpose.

And it doesn't scale to multiple autovacs anyway, much less the wait-for-
everybody variant.
        regards, tom lane


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

Предыдущее
От: "Carlo Stonebanks"
Дата:
Сообщение: Re: [INTERFACES] ODBC: how to change search_path in DSN?
Следующее
От: Alban Hertroys
Дата:
Сообщение: Re: [GENERAL] Autovacuum Improvements