Как очистить данные в таблицах PostgreSQL с освобождением места на диске?

Доброго времени суток!

Ситуация такая: есть БД (psql), которая за месяц раздувается до 100Гб, ввиду большого количества данных (за месяц суммарно около 1млрд. строк в таблицах). Место на жестком диске ограничено. После того, как база сожрет все свободное место, что-то с ней сделать у меня не получалось - служба psql не запускается, а удалив что-то из папки data (свободного места на машине нет и ничего удалять, кроме базы, нельзя) - база не восстанавливается. Но вопрос не в этом. Как можно очистить данные в таблицах за определенный период с РЕАЛЬНЫМ освобождением места на диске? Дело в том, что я выполнил DELETE для всех таблиц, удалив записи старше недели (до этого были записи за 3 недели), после чего выполнил VACUUM для всей базы. После этих очень длительных операций, освободилось -500Мб. Именно со знаком минус. Не освободилось АБСОЛЮТНО ничего, а даже наоборот.

P.S: раньше работал с Microsoft SQL, там с такими проблемами никогда не встречался...
  • Вопрос задан
  • 8417 просмотров
Пригласить эксперта
Ответы на вопрос 2
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
Первая ссылка в гугле, ведущая на документацию:
The standard form of VACUUM removes dead row versions in tables and indexes and marks the space available for future reuse. However, it will not return the space to the operating system, except in the special case where one or more pages at the end of a table become entirely free and an exclusive table lock can be easily obtained. In contrast, VACUUM FULL actively compacts tables by writing a complete new version of the table file with no dead space. This minimizes the size of the table, but can take a long time. It also requires extra disk space for the new copy of the table, until the operation completes..


Далее, более предпочтительная альтернатива VACUUM FULL: habrahabr.ru/post/169939
Ответ написан
opium
@opium
Просто люблю качественно работать
Стоит делать фуллвакуум, но опять таки он требует кучи места, то есть если места не осталось совсем то он не сможет нормально пройти.
Логично скопипастить базу на другой сервер где нет проблем с местом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы