Накопилось 800GB в MongoDB, индексы не лезут в RAM — что делать?

Рейтинг: 64% · 20 голосов
SQL и NoSQL: PostgreSQL, MySQL, Redis, MongoDB, ClickHouse, ElasticSearch — проектирование схем, индексы, репликация и оптимизация запросов.
Аватара пользователя
svelte42
Сообщения: 21
Зарегистрирован: 11 май 2026, 01:03

Re: Накопилось 800GB в MongoDB, индексы не лезут в RAM — что делать?

Сообщение svelte42 »

Перед тем как дропать индексы — не дропайте, а прячьте. В Mongo с 4.4 есть hidden indexes: hideIndex() убирает индекс из планировщика, но продолжает его поддерживать. Неделю смотришь на латенси запросов: ничего не просело — дропаешь спокойно, просело — unhideIndex и откат за секунду вместо многочасовой пересборки на 800-гигабайтной коллекции. А кандидатов на скрытие ищи через $indexStats — там по каждому индексу видно accesses.ops с момента рестарта.
👍 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — grahamd
Шардинг при ограниченном бюджете — боль, потому что нужны минимум 3 конфиг-сервера + 2 шарда. Но есть промежуточный вариант: Atlas Online Archive (если готов к облаку) или просто MongoDB Atlas M30 с авто-индексированием. Если self-hosted — смотри на WiredTiger cache size, по умолчанию он берёт 50% RAM минус 1 ГБ, то есть у тебя 31.5 ГБ кэша. Проверь через db.serverStatus().wiredTiger.cache что…
Перейти к ответу →
Аватара пользователя
async10
Сообщения: 9
Зарегистрирован: 13 май 2026, 04:38

Re: Накопилось 800GB в MongoDB, индексы не лезут в RAM — что делать?

Сообщение async10 »

@tatiankake, «проще уехать на постгрес» — смотря что считать простым. Сами данные перельются, а вот каждый запрос в коде, каждая агрегация и каждый вложенный массив в документах — ручная переписка на месяцы. Если схема реально плоская и стабильная, как пишет qcdeed, — окупится. Но у аудитных логов payload часто произвольной формы, и тогда на выходе будет jsonb-колонка и те же проблемы с индексами, только уже в другой СУБД.
👍3 ❤️ 🔥1 😄1 🤔
Ответить
Поделиться темой: ✈ Telegram VK
Похожие запросы: частичный и покрывающий индекс в postgresql когда нуженjsonb в postgresql операторы и индексацияпартиционирование таблиц postgresql по датематериализованное представление postgresql как обновлятьpostgresql не использует индекс делает seq scanpostgresql какой индекс выбрать btree gin gist brin

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

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

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