Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Рейтинг: 61% · 6 голосов
SQL и NoSQL: PostgreSQL, MySQL, Redis, MongoDB, ClickHouse, ElasticSearch — проектирование схем, индексы, репликация и оптимизация запросов.
Ответить
Аватара пользователя
rawgoblin
Сообщения: 39
Зарегистрирован: 13 май 2026, 07:42

Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение rawgoblin »

PostgreSQL 15.6, самописная аналитика, таблица events на 700 гигов, около 4 млрд строк. Пишем append-only, апдейтим только последние сутки (статусы обработки). Раз в несколько дней приходит автовакуум и начинается: iowait под 80, латенси API с 40мс прыгает до 600, алерты, паника.

Что уже крутил. autovacuum_vacuum_cost_limit поднимал до 2000, потом наоборот опускал до 400 с cost_delay 10ms. В первом случае вакуум быстрее, но кладет диск, во втором ползет двое суток и держит xmin, раздувается все остальное. autovacuum_vacuum_scale_factor для таблицы поставил 0.01, чтобы чаще и помельче. Стало чаще и все равно больно.

Диск network-ssd в Яндекс облаке, лимит 12к IOPS. Чувствую, проблема где-то тут, но переезд на local-ssd это отдельный квест с потерей живой миграции.

Куда копать? Партиционирование предлагали, но это переписывать половину запросов.
👍2 ❤️ 🔥4 😄 🤔
✔ Лучший ответ сформирован автоматически — causious
партиционирование и есть ответ, остальное припарки. Режьте по месяцам через декларативные партиции, pg_partman автоматизирует создание. Вакуум будет ходить только по свежей партиции, где апдейты, старые он перестанет трогать вообще, там нет мертвых строк. И запросы переписывать почти не придется, если ключ партиционирования попадает в where, у вас же наверняка везде фильтр по дате. 700 гигов одни…
Перейти к ответу →
Аватара пользователя
causious
Сообщения: 30
Зарегистрирован: 13 май 2026, 16:00

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение causious »

✔ Лучший ответ — сформирован автоматически
партиционирование и есть ответ, остальное припарки. Режьте по месяцам через декларативные партиции, pg_partman автоматизирует создание. Вакуум будет ходить только по свежей партиции, где апдейты, старые он перестанет трогать вообще, там нет мертвых строк. И запросы переписывать почти не придется, если ключ партиционирования попадает в where, у вас же наверняка везде фильтр по дате.

700 гигов одним куском это не только вакуум. Это еще индексы, которые не лезут в память, и невозможность дешево дропнуть старье. Вы старые данные сейчас как удаляете? delete? вот вам и главный источник bloat.
👍 ❤️1 🔥 😄 🤔2
Аватара пользователя
lentyaj
Сообщения: 68
Зарегистрирован: 11 май 2026, 00:17

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение lentyaj »

12к iops на 4 млрд строк, серьезно? вы пытаетесь тюнингом конфига компенсировать диск уровня 2015 года. local-ssd или нормальное железо, потом уже про вакуум разговаривайте
👍1 ❤️ 🔥 😄2 🤔
Аватара пользователя
hogan20
Сообщения: 71
Зарегистрирован: 13 май 2026, 12:49

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение hogan20 »

а fillfactor у таблицы какой? при апдейтах последних суток fillfactor 90 даст HOT апдейты, и вакууму будет сильно меньше работы. и покажите pg_stat_user_tables, интересен n_dead_tup перед запуском вакуума
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
asyncmonk
Сообщения: 62
Зарегистрирован: 13 май 2026, 16:00

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение asyncmonk »

@hogan20, таблица events. каждый раз events. потом в ней 40 типов событий и json на 3кб в каждой строке, угадал?
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
tomcruz
Сообщения: 29
Зарегистрирован: 12 май 2026, 18:25

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение tomcruz »

fillfactor дефолтный 100, про HOT не подумал, спасибо, попробую. json есть, но маленький, не угадал) Старье удаляем deletом раз в квартал, и да, после этого как раз приходит самый адовый вакуум. Похоже, все-таки партиции. Буду продавать менеджменту неделю на переделку.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
simmeon1
Сообщения: 18
Зарегистрирован: 11 май 2026, 08:45

Re: Автовакуум кладет прод на таблице в 700 гигов, я уже все перекрутил

Сообщение simmeon1 »

у нас был почти один в один кейс, 15.4, таблица на терабайт. сделали партиции по неделям, старье дропаем через drop table, вакуум из топа проблем ушел совсем. на переделку ушло 2 недели на двоих, окупилось за месяц. единственное, глобальных индексов в пг нет, уникальность только через ключ партиционирования, имейте в виду
👍 ❤️ 🔥1 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Базы данных»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость