Я использую базу данных PostgreSQL, в которой есть несколько таблиц, в которых хранится информация журналов. Эта информация предназначена только для отчетов и выводится в файл и удаляется из базы данных, если она старше 30 дней.
Может быть удалено миллионы строк, и мы выполняем REINDEX каждый раз после удаления.
Достаточно ли этого, или мы также должны использовать ВАКУУМ или ВАКУУМНЫЙ АНАЛИЗ? Или REINDEX не нужен, и мы должны вместо этого просто запустить VACUUM или VACUUM ANALYZE?
Мы используем PostgreSQL 8.2.3, который, как я считаю, не позволяет автоматически пылесосить.
Ответы:
Вы должны выполнить VACUUM ANALYZE, поскольку VACUUM позволит повторно использовать пространство, используемое удаленными данными, и предотвратить обход транзакций, а ANALYZE обновит статистику планировщика, что должно привести к улучшению планов запросов для ваших отчетов.
REINDEX теоретически не требуется, но вы можете обнаружить, что это приводит к повышению производительности, поскольку индекс является непрерывным.
Соответствующие страницы документации для 8.2 находятся здесь (обычная переиндексация) и здесь (обычная очистка пылесосом) .
источник