База знаний Одина – Одинэсника Форумы ODIN – Форум по 1С Предприятию Когда использовать VACUUM, VACUUM FULL, ANALYZE, REINDEX в PostgreSQL?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33340
      Телеграм группа https://t.me/odineskiOdineski
      Участник

      когда использовать VACUUM, VACUUM  + FULL, ANALYZE, REINDEX ? Или автовакум лучше? На сервере 3 базы в которых происходят изменения, остальные ток для просмотра данных за прошлые года. На диске кончается место. В базе работает 10 человек.

    • #33341
      bot_avaOdin – Одинэсник
      Участник

      web, привет!

      В твоей ситуации с PostgreSQL и 1С, где есть 3 активно изменяющиеся базы и несколько баз только для чтения, а также ограниченное место на диске и 10 пользователей, важно грамотно использовать инструменты обслуживания базы.

      ### Когда использовать VACUUM, VACUUM FULL, ANALYZE, REINDEX и автовакам:

      #### 1. **AUTOVACUUM**
      – Это автоматический процесс очистки “мертвых” строк (dead tuples), обновления статистики и предотвращения разрастания таблиц.
      – **Рекомендуется всегда включать на рабочих базах с изменениями**, особенно при 10 пользователях и активных изменениях.
      – Для 1С с большим количеством таблиц и индексов стоит настроить автовакам более агрессивно:
      autovacuum_vacuum_scale_factor = 0.01 (срабатывание при 1% изменений)
      autovacuum_analyze_scale_factor = 0.005 (анализ при 0.5% изменений)
      autovacuum_naptime = 20s (частота запуска)
      – Для баз только для чтения автовакам можно **выключить**, чтобы не тратить ресурсы.

      #### 2. **VACUUM (без FULL)**
      – Очищает мертвые строки, освобождая место внутри таблиц, но не уменьшает физический размер файлов.
      – Используется регулярно, если автовакам не справляется или нужно срочно освободить место внутри таблиц.
      – Можно запускать вручную для баз с активными изменениями, если видишь рост “dead tuples” и замедление.
      – Не требует блокировок таблиц, работает онлайн.

      #### 3. **VACUUM FULL**
      – Полностью сжимает таблицы, освобождая место на диске, уменьшая размер файлов.
      – Требует **монопольного доступа** к таблицам (блокирует их на время операции).
      – Используется:
      – При значительном удалении данных (более 20% таблицы).
      – Когда на диске критически мало места и нужно срочно освободить физическое пространство.
      – Для 1С лучше делать в периоды простоя, например, ночью или при блокировке базы.

      #### 4. **ANALYZE**
      – Обновляет статистику таблиц, чтобы оптимизатор запросов строил эффективные планы.
      – Выполняется автоматически автовакамом, но можно запускать вручную после больших изменений данных или загрузки.
      – Рекомендуется запускать после массовых операций вставки/удаления/обновления.

      #### 5. **REINDEX**
      – Перестраивает индексы, устраняя фрагментацию и повреждения.
      – Используется при:
      – Замедлении запросов из-за фрагментации индексов.
      – Ошибках индексов.
      – После восстановления из бэкапа, если есть подозрение на повреждения.
      – Требует блокировки индексов, лучше запускать в периоды низкой нагрузки.

      ### Рекомендации для твоей ситуации:

      – **Для 3 активных баз:**
      – Включи и настрой автовакам с агрессивными параметрами (см. выше).
      – Регулярно (например, еженедельно) запускай vacuumdb -z -F (vacuum + analyze + freeze) в 2-4 потока для поддержания порядка.
      – При удалении большого объема данных — планируй VACUUM FULL или pg_repack (если доступен) в периоды простоя.
      – Периодически запускай REINDEX для индексов, если замечаешь деградацию производительности.
      – **Для баз только для чтения:**
      – Отключи автовакам, чтобы не тратить ресурсы.
      – Периодически запускай ANALYZE вручную, чтобы статистика была актуальной.
      – **По месту на диске:**
      – Используй VACUUM FULL или pg_repack для освобождения физического пространства.
      – Следи за логами и статистикой autovacuum, чтобы понять, где есть проблемы.
      – Рассмотри возможность расширения дискового пространства, если часто возникает дефицит.

      ### Пример команд для обслуживания:

      ### Итог:

      – **Автовакуум — основа**, он должен быть включен и правильно настроен для активных баз.
      – **VACUUM FULL и REINDEX — инструменты для редких, но важных операций**, когда нужно освободить место или исправить индексы.
      – **ANALYZE — поддерживает статистику, помогает оптимизатору.**
      – Для баз только для чтения автовакам можно отключить, чтобы экономить ресурсы.

      Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1912525/

      Если нужна помощь с конкретными настройками или скриптами — обращайся!

Просмотр 1 ветки ответов
  • Для ответа в этой теме необходимо авторизоваться.