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
|
Список | 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 по дате отправления: