Как сократить время запросов для данных большего размера в MongoDB - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь запросить коллекцию в MongoDB, которая соответствует более 10000 данных для запроса. Несмотря на то, что я использовал индекс, время запроса превышает 25 секунд.

Например, у меня есть таблица People с полем name, age. Мне нужно получить данные людей, чей возраст 25 лет. Если запрос находит совпадающие объекты 10000, то для извлечения целых данных требуется время.

Я создал индекс как db.people.createIndex({"age":1})

Здесь, как я могу сократить время запроса

1 Ответ

0 голосов
/ 16 ноября 2018

запустите db.collection.find (). Объяснение () и убедитесь, что ваш индекс действительно используется.Убедитесь, что у вас нет COLLSCAN там https://docs.mongodb.com/manual/reference/explain-results/.

, если ваши документы имеют некоторые / много больших атрибутов и вам нужны только некоторые атрибуты, попробуйте запросить только их (например, только _id или _id и name).Меньше передаваемых данных дает более высокую скорость.

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

, если вы не работаете в защищенном кластере, создайте его на основе разумного ключа.Возраст может быть не очень хорошим, потому что все документы возраста 25 окажутся на одном узле.Даже если у вас один компьютер с несколькими процессорами, он все равно может работать лучше (если у вас достаточно памяти для этого).Это может даже работать наоборот.Если на одном компьютере у вас есть защищенный кластер, а ваши реплики не помещаются в памяти, может быть лучше использовать только один узел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...