Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE
Дата
Msg-id 20150408192105.GV4369@alvh.no-ip.org
обсуждение исходный текст
Ответ на BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE  (maciek@heroku.com)
Ответы Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE  ("David G. Johnston" <david.g.johnston@gmail.com>)
Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE  (Jeff Janes <jeff.janes@gmail.com>)
Список pgsql-bugs
maciek@heroku.com wrote:

> If autovacuum is running a VACUUM to prevent wraparound on a certain table,
> it looks like it blocks TRUNCATE of that table, which would obviate the need
> for the VACUUM in the first place (and could happen much more quickly). This
> seems like a usability wart at best--one has to instead kill the autovacuum
> (e.g., via pg_cancel_backend) and then TRUNCATE.

If you had truncated the table before the issue became an emergency,
vacuum would have gave way to truncate.  But when autovacuum sees that
the problem is too serious to ignore, it doesn't give way to anything;
if it did, it would fall prey of the same problem it's trying to avoid.

> This is especially inconvenient when the user trying to truncate does
> not have permission to kill (or even see!) the wraparound VACUUM.
> Would it be possible to have autovacuum yield to a TRUNCATE in this
> situation?

Sounds like we would have to special-case truncate in the deadlock
checker or something like that.  Doesn't seem particularly palatable.

The way this works is that deadlock checker returns "you're blocked but
the culprit is autovacuum" when not in emergency mode; then the other
process sends a signal to autovac which commits suicide.  To fix this
case we would have to add another special code "you're blocked but the
culprit is an emergency vacuum", then the other process sees itself as
truncate then sends signal anyway.

--
Álvaro Herrera                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE
Следующее
От: "David G. Johnston"
Дата:
Сообщение: Re: BUG #13002: VACUUM to prevent wraparound blocks TRUNCATE