🔬 Обновление статистики в PostgreSQL.
Те кто долго работал с СУБД MS SQL, привыкли настраивать планы обслуживания с обновлением статистики.
Актуальная статистика очень важная вещь, ведь именно на нее полагается планировщик при построении запроса. И чем актуальнее статистика, тем быстрее может выполниться ваш запрос.
Возникает вопрос: где это настроить в PostgreSQL, и нужно ли?
Ответ: в общем случае настраивать обновление статистики в PostgreSQL так как это делали в MS SQL не нужно.
В PostgreSQL есть всем нам известный фоновый процесс autovacuum, и именно он в момент удаления неактуальных версий строк обновляет ещё и статистику по таблице.
Лишнее подтверждение того, что autovacuum отключать ни в коем случае нельзя, а нужно его грамотно настраивать 😉
Если вы считаете, что ваша статистика все равно не актуальна, то тут, скорее всего, вам в первую очередь надо смотреть на то как у вас справляется со своей задачей autovacuum, и в зависимости от вашей ситуации менять его настройки.
Обновление статистики можно сделать и принудительно вручную с помощью команды:
ANALYZE;
Без указания параметров команда собирает статистику по всем таблицам базы данных и сохраняет результаты в системном каталоге pg_statistic.
Если вы хотите собрать статистику по конкретной таблице, то нужно ввести следующую команду:
ANALYZE имя_таблицы;
Более того, вы можете задать и конкректное имя колонки в таблице, и тогда статистика будет собранная только по этой колонке. Для этого используйте следующую команду:
ANALYZE (имя_таблицы имя_колонки);
Более подробно о команде ANALYZE вы можете почитать в документации по ссылке:
https://postgrespro.ru/docs/postgrespro/15/sql-analyze