Что это значит

Автоочистка (autovacuum) держит на таблице мягкую блокировку и уступает, когда кто-то просит конфликтующую: ALTER TABLE, TRUNCATE, LOCK TABLE, REINDEX, CREATE INDEX без CONCURRENTLY. PostgreSQL отменяет автоочистку и пишет эту запись, а рядом DETAIL с именем таблицы.

Разовая отмена безвредна: автоочистка вернётся к таблице позже. Опасно, когда её отменяют на одной таблице раз за разом: мёртвые строки копятся, таблица разрастается, а в худшем случае подходит угроза wraparound.

Как проверить

SELECT relname, n_dead_tup, last_autovacuum, last_vacuum
FROM pg_stat_user_tables ORDER BY n_dead_tup DESC LIMIT 10;

Если у таблицы из журнала давно нет last_autovacuum и много n_dead_tup, её не успевают чистить.

Что сделать

  1. Найти, какая операция регулярно берёт конфликтующую блокировку на этой таблице, и развести её по времени с автоочисткой.
  2. Почистить таблицу вручную в спокойное время: VACUUM (VERBOSE) <таблица>;. Ручной VACUUM не уступает чужим блокировкам, как автоочистка, поэтому для таблиц, которые постоянно прерывают, его стоит запланировать в окно обслуживания.