Как выполнить вакуумную команду без предупреждения остановок в postgres? - PullRequest
1 голос
/ 29 июня 2019

Попытка vacuum в качестве базы данных postgresql, но она останавливается после очистки около 50 записей, с помощью этой команды / предупреждения:

 backend> vacuum FULL;
 WARNING:  database "postgres" must be vacuumed within 988308 transactions
HINT:  To avoid a database shutdown, execute a full-database VACUUM in "postgres".

бэкенд>

// again

WARNING:  database "postgres" must be vacuumed within 988242 transactions
HINT:  To avoid a database shutdown, execute a full-database VACUUM in "postgres".

Как это можно вызвать, чтобы оно не останавливалось так часто? Ты: ^)

1 Ответ

1 голос
/ 29 июня 2019

VACUUM (FULL) весьма отличается от VACUUM и является не , что необходимо в этой ситуации.VACUUM (FULL) не просто лучше VACUUM.

Вы каким-то образом вывели себя в плохое место.Если вам не удается запустить обычный VACUUM в базе данных postgres в.миллионов транзакций, ваша база данных потеряет данные.

Вы должны запустить PostgreSQL с опцией --single (подробности см. в документации) , подключенной к базе данных postgres и затем выполните

VACUUM

Вероятно, будут препятствия, которые вы должны будете сначала удалить.Это может быть

  • длительная транзакция (пропала при запуске в однопользовательском режиме)

  • осиротевшие подготовленные транзакции

  • слот для потерянных репликаций

Подробнее см. мой блог .

...