рабочую бд, и вот на значительной части таблиц и партишенов в частности вижу похожую картину, вида:
table_len = 1027186688
tuple_count = 584645
tuple_len = 67393506
tuple_percent = 6.56
dead_tuple_count = 110610
dead_tuple_len = 12749560
dead_tuple_percent = 1.24
free_space = 900957492
free_percent = 87.71
Т.е как я понимаю из 980мб доля bloat составляет 859мб. Нагрузка такова, что довольно значительная часть строк обновляется раз в неделю, и это характерно для записей, созданных за последние месяца 3. Однако, наиболее замусоренными (c наибольшим процентом и размером free_percent/free_space) оказываются партишены, которые хранят данные больше чем 3 месяца назад, пик приходится на данные годовалой давности.
Автовакуум, вакуум, филфактор я не трогал, идут дефолтные значения.
Вопрос - собственно, что предпринять для уменьшения bloat? 87% процентов bloat кажутся серьезным симптомом неправильного использования или конфигурации
> Нагрузка такова, что довольно значительная часть строк обновляется раз в неделю, и это характерно для записей, созданных за последние месяца 3. С учётом показанного, похоже на то, что autovacuum не справляется (хотя нагрузка-то не совсем понятна), нет? > Однако, наиболее замусоренными (c наибольшим процентом и размером free_percent/free_space) оказываются партишены, которые хранят данные больше чем 3 месяца назад, пик приходится на данные годовалой давности. И зачем они тогда вообще партиционированы, в таком случае?! Я правильно понял, что по датам? Если так, то просто поразительно — применено средство улучшения maintenance, но этот maintenance не выполняется. ;) > Автовакуум, вакуум, филфактор я не трогал, идут дефолтные значения. А зря, как видно. > Вопрос - собственно, что предпринять для уменьшения bloat? Autovacuum сделать намного аггрессивнее, выполнить maintenance "старых" таблиц (и посмотреть в сторону pg_partman, например).
Bloat -- это место, занятое неактуальными версиями. В даном случае dead_tuple_len -- 12 Мб или 15% от общего объёма данных, или 1.24% от размера таблицы на диске. Что нормально (хотя автовакуум всегда стоит поднастроить). А 88% свободного места -- это то, что осталось выделено в файлах данных после вакуума. Можно его уменьшить с помощью VACUUM FULL/CLUSTER: вероятно, оно так сильно уже не вырастет, если нагрузка стабилизировалась. Но это не тот блоат, который мешает, например, эффективной работе индексов: в ряде случаев наличие этого зарезервированного места вообще незаметно для работы.
Обсуждают сегодня