Проект

Общее

Профиль

VACUUM (VACUUM FULL) необходимо ли выполнять для БД?

Добавил(а) Орлов Константин 5 месяца назад

Недавно после миграции ящиков боролся с достаточно крупными по размеру и заметил, что после удаления лишнего, сжатия папок и очистки корзины, в панели управления TEGU и количество писем и объём ящика сократился и показывал правильные величины, а вот соответствующая таблица в СУБД нисколько не уменьшилась, в принципе это понятно и нормально, учитывая тонкости работы автовакуума. Но запустив вручную VACUUM для этой БД, опять не увидел уменьшения объёма таблицы, а уменьшение должно было быть немаленькое, с 20Гб до 6Гб. И лишь запустив VACUUM FULL, после 2-3 часов выполнения команды, объём соответствующей таблицы пришел в норму. Хотелось бы узнать, в процессе эксплуатации почтовой системы, есть ли необходимость вручную либо по некому расписанию выполнять оптимизацию БД? Если оптимизация нужна, поделитесь пожалуйста наработками, что еще нужно делать с БД почтовых ящиков.


Ответы (1)

RE: VACUUM (VACUUM FULL) необходимо ли выполнять для БД? - Добавил(а) Кальметов Игорь 5 месяца назад

Работа TEGU с СУБД ничем не отличается от использования СУБД с любым другим приложением.
Т.к. TEGU это не 1С, то каких то специальных процедур и настроек на стороне PG делать не надо.
Таким образом, каких то особенных рекомендаций тут дать нельзя.

По существу заданного вопроса.
Команда VACUUM удаляет из базы "мертвые строки", оставшиеся там после выполнения команд UPDATE или DELETE, но при этом не возвращает освободившееся место операционной системе (что вы и наблюдали). Это делается специально чтобы свободное место осталось за СУБД для ее дальнейшей работы.

Однако, если вы хотите вернуть место операционной системе для достижения "спортивного результата", то необходимо выполнение VACUUM FUUL (тут вы тоже поступили верно и получили ожидаемый результат).

Примите также во внимание, что ручное управление полезно в каких то особых случаях. На практике вполне достаточно правильно настроить процедуру AUTOVACUUM (задать количество строк или процентное соотношение "мертвых" строк). При достижении пороговых значений БД будет очищаться самостоятельно.

    (1-1/1)