Я унаследовал большой сервер MongoDB на работе, и мне было поручено выяснить, почему запросы выполняются на нем так медленно. БД содержит тонны и тонны записей (порядка 10 ^ 9) и занимает около 300 ГиБ. Сначала я подумал, что виновником могло быть необработанное количество записей, поэтому я настроил индексы на соответствующих полях. Это очень помогло для запросов, которые искали критерии, которые были в БД, но для запросов, где не было бы совпадений, требовалось от 80 до 90 минут. Любые идеи о том, как справиться с этим?
9
Ответы:
Кажется, вам не хватает важного индекса, тем более что запрос без совпадений занимает намного больше времени, чем запрос с совпадениями. Что это за запрос? Может быть, вам нужен составной индекс? Вы используете
where
как часть запроса?Я не эксперт в MongoDB, но 80-90 минут абсолютно ненормально. Я не знаю, как MongoDB «звучит» для Arenstar, но было показано, что он обрабатывает миллиарды документов (терабайт данных) .
источник
Это может быть слишком поздно для ответа, но я подумал, что стоит упомянуть. Есть инструменты, такие как Mongostat, которые можно использовать, чтобы увидеть, что на самом деле происходит. Слишком много пропусков индекса, слишком много ошибок страниц. Если вы выполняете одновременные операции чтения и записи, вам также следует искать процент блокировки. 300 ГБ - это не так уж много для mongodb. Это может легко пойти намного дальше.
Другие полезные команды:
источник
Посмотрите на страницу профилировщика базы данных MongoDB , в частности, на раздел « Оптимизация производительности запросов» .
источник
MongoDb является веб-масштабом .. Извините, должен был сказать, что ..
Нет совпадений, вероятно, займет некоторое время на основе, возможно, сканирования диапазона ???
Я бы сломал это .. Монго не звучит как БД для обработки 300 ГБ, и, вероятно, еще недостаточно зрел, чтобы знать, как он работает с большими объемами данных ..
По какой причине вы используете Mongo ??
источник