2015-11-23 3 views
1

Я вытаскиваю данные из коллекции в Meteor/MongoDB. Всего около 15 000 документов, и запрос тянет примерно половину из них (8 100). Захват (прежде чем что-либо с ним делать) занимает 5-7 секунд, как сообщает Кадира.Действительно медленный выбор в Метеор

Есть индексы в соответствующих полях, и я могу запустить find() в 20-50 мс - так что это выборка, это проблема, а не находка. И на этот раз исключает фактически что-либо с документами - это просто find().

Каждый документ содержит около десятка полей, в основном короткие (< 30 символов) строки с парой ISODates и пару массивов из 1-2 строк. В общем, общий набор данных (все 8000 записей) составляет около 5 мегабайт.

Все это на сервере - ничто не отправляется клиенту.

Является ли это продолжительностью нормальной? Если нет, что я могу сделать, чтобы ускорить его?

+0

Если вы запускаете тот же запрос, возвращая такое же количество документов, используя mongodb cli, вы получаете такую ​​же продолжительность? Это может быть медленное соединение на одном конце, а не проблема с методом выборки. –

+0

1. Уменьшите количество полей, которые вы публикуете, 2. Уменьшите количество документов, которые вы публикуете одновременно (действительно ли вам нужны все 8k-документы на клиенте?) 3. Если вы выполняете агрегацию на сервер какого-либо типа использует структуру агрегации mongo и позволяет db выполнять работу напрямую, 4. Solid State Disks! –

+0

@ michel-floyd: Это все на сервере - ничего не публикуется клиенту. Это часть процедуры, которая поддерживает некоторые пользовательские отчеты. Сервер принимает параметры отчета от клиента (какие коллекции, поля и т. Д.), А затем эффективно объединяет коллекцию. Затем результат поступает в коллекцию, которая отправляется клиенту по частям. Эта часть работает отлично. Похоже, мне, возможно, понадобится перестроить все это, но я никогда бы не подумал, что вытащить 5 мегабайт данных в память на сервере займет так много времени. –

ответ

0

Ну ... не уверен, что именно вызвало это, но изменение от одного поставщика хостинга базы данных к другому фиксировало его.

+0

Уход за предоставлением до и после базы данных хостинг-провайдеров? – evolross

+1

modulus.io -> compose.io –

+0

haha ​​Я нахожусь на compose.io и испытываю ту же проблему, вы когда-нибудь диагностировали ее? Я не могу переключить поставщиков –

Смежные вопросы