Каков самый быстрый способ восстановить статистику PostgreSQL с нуля/с нуля с помощью ANALYZE?

У меня есть база данных PostgreSQL v10 размером около 100 ГБ.

Каков наиболее эффективный (быстрый) способ восстановления статистики, например, после обновления основной версии?

ANALYZE без параметров обновляет статистику для всей базы данных по умолчанию, это мучительно медленно! Это похоже на единый процесс.

Есть ли способ распараллелить это, чтобы ускорить его?


person maxTrialfire    schedule 23.10.2018    source источник
comment
Почему это должно быть быстро?   -  person wildplasser    schedule 24.10.2018
comment
потому что запросы ужасно медленные с отсутствующей статистикой. Я предполагал, что это очевидно   -  person maxTrialfire    schedule 24.10.2018


Ответы (1)


Вы можете использовать vacuumdb с теми же параметрами, которые предлагает pg_upgrade:

vacuumdb --all --analyze-in-stages

Документация описывает, что он делает:

Только рассчитывайте статистику для использования оптимизатором (без очистки), например --analyze-only. Запустите несколько (в настоящее время три) этапов анализа с различными настройками конфигурации, чтобы быстрее получить полезную статистику.

Этот параметр полезен для анализа базы данных, которая была заново заполнена из восстановленного дампа или pg_upgrade. Этот параметр попытается создать некоторую статистику как можно быстрее, чтобы сделать базу данных пригодной для использования, а затем создать полную статистику на последующих этапах.

Для расчета статистики с несколькими параллельными процессами можно использовать опцию -j из vacuumdb.

person Laurenz Albe    schedule 23.10.2018
comment
вариант, который я искал, был -j njobs --jobs=njobs - person maxTrialfire; 24.10.2018
comment
Спасибо - я добавил это к ответу для потомков. - person Laurenz Albe; 24.10.2018