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