Почему мои запросы MongoDB действительно очень медленные?


9

Я унаследовал большой сервер MongoDB на работе, и мне было поручено выяснить, почему запросы выполняются на нем так медленно. БД содержит тонны и тонны записей (порядка 10 ^ 9) и занимает около 300 ГиБ. Сначала я подумал, что виновником могло быть необработанное количество записей, поэтому я настроил индексы на соответствующих полях. Это очень помогло для запросов, которые искали критерии, которые были в БД, но для запросов, где не было бы совпадений, требовалось от 80 до 90 минут. Любые идеи о том, как справиться с этим?


1
Какая версия MongoDB? Какое оборудование? Сколько осколков?
Роб Олмос

2
О, боль унаследованной проблемы ...
gWaldo

Ответы:


5

Кажется, вам не хватает важного индекса, тем более что запрос без совпадений занимает намного больше времени, чем запрос с совпадениями. Что это за запрос? Может быть, вам нужен составной индекс? Вы используете whereкак часть запроса?

Я не эксперт в MongoDB, но 80-90 минут абсолютно ненормально. Я не знаю, как MongoDB «звучит» для Arenstar, но было показано, что он обрабатывает миллиарды документов (терабайт данных) .


4

Это может быть слишком поздно для ответа, но я подумал, что стоит упомянуть. Есть инструменты, такие как Mongostat, которые можно использовать, чтобы увидеть, что на самом деле происходит. Слишком много пропусков индекса, слишком много ошибок страниц. Если вы выполняете одновременные операции чтения и записи, вам также следует искать процент блокировки. 300 ГБ - это не так уж много для mongodb. Это может легко пойти намного дальше.

Другие полезные команды:

    db.stats();
    db.currentOp();


-5

MongoDb является веб-масштабом .. Извините, должен был сказать, что ..

Нет совпадений, вероятно, займет некоторое время на основе, возможно, сканирования диапазона ???

Я бы сломал это .. Монго не звучит как БД для обработки 300 ГБ, и, вероятно, еще недостаточно зрел, чтобы знать, как он работает с большими объемами данных ..

По какой причине вы используете Mongo ??


Это было просто то, что парню до меня (который ушел) было удобно пользоваться, и, к сожалению, он реализовал это. С другой стороны, мы открыты для новых предложений по БД.
Марк Лемуан

Какие данные вы храните ??? все о вашей структуре данных
Arenstar

Это небольшие записи в лог-файле, каждая из которых содержит идентификатор (int), имя сервера (строка), полезные данные сообщения (строка), дату и IP-адрес. У меня в настоящее время есть индексы на ID и имя сервера.
Марк Лемуан

8
есть множество компаний, использующих mongodb. 300 г выполнимо, спросите людей в foursquare, wordnik и boxedice, у которых есть тонна данных. если что, индексы неверны. Я бы проверил их, прежде чем вырвать БД и заменить ее чем-то другим.
luckytaxi

1
@Arenstar: Что означает веб-масштаб? И чем он отличается от любого другого масштаба?
Джошуа Партоги
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.