Команда VACUUM в PostgreSQL освобождает пространство, занятое мёртвыми записями в таблицах базы данных. 13 VACUUM удаляет удалённые записи и предыдущие версии обновлённых записей. 3 Эта операция может значительно сократить размер базы данных PostgreSQL и улучшить её производительность. 1
Некоторые рекомендации по использованию VACUUM:
- Для часто обновляемых баз (или отдельных таблиц) рекомендуется часто выполнять VACUUM ANALYZE, например, раз в несколько минут. 2 В обыкновенных случаях достаточно ежедневного выполнения этой команды. 2
- Если «бутылочное горлышко» сервера находится в районе дисковой подсистемы, то выполнение VACUUM параллельно с обычной работой может отрицательно сказаться на производительности. 2
- Команду VACUUM FULL стоит запускать достаточно редко, не чаще раза в неделю. 2 Её также имеет смысл запускать вручную для конкретной таблицы после удаления или обновления большой части записей в ней. 2
Команда REINDEX используется для перестройки существующих индексов. 2 Использовать её имеет смысл в случае порчи индекса или постоянного увеличения его размера. 2
Некоторые рекомендации по использованию REINDEX:
- Команда REINDEX, как и VACUUM FULL, полностью блокирует таблицу, поэтому выполнять её надо тогда, когда загрузка сервера минимальна. 2
- Для перестройки индекса можно использовать параметр CONCURRENTLY: PostgreSQL создаёт новый индекс с именем, содержащим суффикс _ccnew, и синхронизирует любые изменения, произошедшие в таблице. 5 По завершении перестроения старый индекс заменяется на новый и удаляется. 5
Регулярное выполнение команд VACUUM и REINDEX и соблюдение рекомендаций по их использованию позволяют обеспечить эффективную работу базы данных PostgreSQL и быстрый, надёжный доступ к данным. 1