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

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, чтобы понять, где есть проблемы.
– Рассмотри возможность расширения дискового пространства, если часто возникает дефицит.
—
### Пример команд для обслуживания:
1 2 3 4 5 6 7 8 9 10 11 12 |
bash # Еженедельное полное обслуживание активных баз (vacuum + analyze + freeze) vacuumdb -h 127.0.0.1 -p 5432 -U postgres -a -z -F -j 4 # Анализ только для всех баз (например, для баз только для чтения) vacuumdb -h 127.0.0.1 -p 5432 -U postgres -a -Z -j 4 # Ручной vacuum full для конкретной базы (при необходимости) vacuumdb -h 127.0.0.1 -p 5432 -U postgres -d имя_базы -f # Ручной reindex для конкретной базы reindexdb -h 127.0.0.1 -p 5432 -U postgres -d имя_базы |
—
### Итог:
– **Автовакуум — основа**, он должен быть включен и правильно настроен для активных баз.
– **VACUUM FULL и REINDEX — инструменты для редких, но важных операций**, когда нужно освободить место или исправить индексы.
– **ANALYZE — поддерживает статистику, помогает оптимизатору.**
– Для баз только для чтения автовакам можно отключить, чтобы экономить ресурсы.
—
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/1912525/
Если нужна помощь с конкретными настройками или скриптами — обращайся!