172 похожих чатов

Ситуация: я начал изучать вопрос pgstattuple и начал им обследовать

рабочую бд, и вот на значительной части таблиц и партишенов в частности вижу похожую картину, вида:

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 кажутся серьезным симптомом неправильного использования или конфигурации

2 ответов

8 просмотров

> Нагрузка такова, что довольно значительная часть строк обновляется раз в неделю, и это характерно для записей, созданных за последние месяца 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: вероятно, оно так сильно уже не вырастет, если нагрузка стабилизировалась. Но это не тот блоат, который мешает, например, эффективной работе индексов: в ряде случаев наличие этого зарезервированного места вообще незаметно для работы.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта