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 ответов

3 просмотра

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

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

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

Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
33
Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
25
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
19
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
А чем вам питонисты не угодили?😂
.
79
у меня вопрос на счет .global <name> для чего это нужно если я пишу на ассемблере? только для того что бы сделать это видимым для линкера? вот что написано в докумментации GA...
Simple Sorcerer
1
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
У меня вот только только был затык при изучении одной темы. Я настолько привык к джс, что мозг с трудом признал таки, что f и \x -> f x - это равные функции. Потому что в д...
xfides Barabanov
6
Карта сайта