Как освободить пространство, занимаемое неиспользуемыми большими объектами в PostgreSQL

У меня есть кластер базы данных среднего размера, работающий на PostgreSQL 8.3.

База данных хранит цифровые файлы (изображения) в виде больших объектов.

В кластере базы данных наблюдается значительная активность, много контента создается и удаляется на постоянной основе.

Несмотря на то, что таблица приложения, в которой хранятся идентификаторы OID, правильно поддерживается приложением (при удалении файла образа), размер кластера базы данных постоянно увеличивается.

Авто-пылесос активен, поэтому этого не должно происходить.

1 ответ

Решение

Большие объекты НЕ удаляются из базы данных, когда удаляются строки таблицы приложения (содержащие OID).

Это также означает, что пространство не будет возвращено процессом VACUUM.

Чтобы избавиться от неиспользуемых больших объектов, вы запустили VACUUMLO в базах данных. Vacuumlo удалит все не связанные объекты из базы данных.

Пример вызова:

vacuumlo -U postgres -W -v <database_name>

(Я включил только -v, чтобы сделать вакуум более подробным, чтобы вы увидели, сколько больших объектов он удаляет)

После того, как vaculo удалил большие объекты, вы можете запустить VACUUM FULL (или разрешить запуск процесса автоматического вакуумирования).

Другие вопросы по тегам