peredozo
@peredozo

Как оптимизировать MongoDB?

Не понимаю в чем проблема. Есть небольшая коллекция, допустим 50 таких документов:
db.test.insert({a: 1, b: 'test', c: 'test'});
db.test.insert({a: 2, b: 'test', c: 'test'});
db.test.insert({a: 3, b: 'test', c: 'test'});
db.test.insert({a: 4, b: 'test', c: 'test'});
db.test.insert({a: 5, b: 'test', c: 'test'});
...

Все запросы отрабатывают моментально.
Добавляю массив на миллион записей к нескольким документам, например:
db.test.update({a: {$in: [1,2,3]}}, {$set: {d: [0...1000000]}});

Все. Теперь любой запрос эту коллекцию длится несколько секунд, независимо от того, выбираю я поле d или нет.
db.test.find({}, {a: 1, b: 1});
db.test.find({}, {d: 0});
db.test.find({a: 5});
db.test.find({a: 5}, {a: 1, b: 1});
db.test.find({a: {$in: [4,5]}});
db.test.find({a: {$in: [4,5]}}, {a: 1, b: 1});
db.test.find({a: {$in: [4,5]}}, {d: 0});

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

Пробовал создавать индексы по полям (a,b,c) - не помогло.

Можно ли это как-то оптимизировать?
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 1
peredozo
@peredozo Автор вопроса
Пока разбирался что это может быть оно как-то само наладилось, за 12ms теперь ответ дает, до этого в течение трех часов было 2000-4000ms. Странно это все...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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