Автоматически запускаете ANALYZE в PostgreSQL?

Автоматически запускаете ANALYZE в PostgreSQL?

Какой самый простой способ автоматического запуска 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#АВТОВАКУУМ

Связанный контент