Какой самый простой способ автоматического запуска ANALYZE <table>;
PostgreSQL 12 на сервере, помимо cronjob?
У меня есть приложение, в которое регулярно вставляются миллионы строк каждую неделю, и примерно через месяц время выполнения запросов становится очень медленным, поскольку статистика для основных таблиц, которые изменяются, устаревает. Выполнение ANALYZE <table>;
для таблиц занимает пару минут и немедленно устраняет проблемы с производительностью, но я считаю, что должна быть настройка, которую я могу сделать, чтобы это могло быть сделано автоматически самим сервером PG, а не вручную?
решение1
Похоже, у вас отключена функция автоочистки, которая, если бы была включена, периодически анализировала бы все ваши таблицы, чтобы обновить их статистику для планировщика запросов.
Самое простое решение — снова включить автовакуум. Проверьте файл postgresql.conf на предмет настройки автовакуума.
решение2
PostgreSQL имеет встроенный autovavuum, который должен быть включен и настроен в соответствии с вашими потребностями. Обычно вы настраиваете *autovacuum_vacuum_threshold * иautovacuum_analyze_thresholdдля запуска желаемого поведения на основе количества измененных кортежей.
Видетьhttps://www.postgresql.org/docs/current/routine-vacuuming.html#АВТОВАКУУМ