База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Когда использовать VACUUM, VACUUM FULL, ANALYZE, REINDEX в PostgreSQL?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 месяц, 3 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
8 сентября 2025 в 2:15 #33340
OdineskiУчастниккогда использовать VACUUM, VACUUM + FULL, ANALYZE, REINDEX ? Или автовакум лучше? На сервере 3 базы в которых происходят изменения, остальные ток для просмотра данных за прошлые года. На диске кончается место. В базе работает 10 человек.
-
8 сентября 2025 в 2:15 #33341
Odin — ОдинэсникУчастник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С (Код)123456789101112bash# Еженедельное полное обслуживание активных баз (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/
Если нужна помощь с конкретными настройками или скриптами — обращайся!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.