Статистика накапливается и сохраняется с момента создания кластера.
Так что, если вы видите, что pg_stat_database.stats_reset
регулярно меняется, должен быть кто-то или кто-то, кто делает это явно с помощью функции pg_stat_reset()
.
Это несколько проблематично, потому что при этом сбрасываются все статистические данные, включая те, что в pg_stat_user_tables
, которые определяют, когда происходят автоочистка и автоанализ. Поэтому после сброса они будут немного не в порядке, пока автоанализ не соберет новую статистику.
Лучший способ - делать регулярные снимки и вычислять разницу.
Вы правы в том, что вам следует собирать данные в течение более длительного времени, прежде чем вы сможете определить, может ли индекс быть консервированным или нет. Например, некоторые действия могут выполняться только один раз в месяц, но требуют определенных индексов.
Перед удалением индексов учтите, что индексы также служат другим целям помимо сканирования:
Они могут быть UNIQUE
или поддерживать ограничение, и в этом случае они служат цели, даже если они никогда не сканируются.
Индексы выражений заставляют PostgreSQL собирать статистику о распределении индексированных выражений, что может оказать заметное влияние на планирование запросов и качество ваших планов выполнения.
Вы можете использовать запрос в этом блоге , чтобы найти все индексы, которые вообще не нужны.