MongoDB плохая производительность чтения - PullRequest
2 голосов
/ 21 октября 2011

У меня есть простой набор данных, несколько коллекций, не более 20 документов в каждой, в MongoDB 2.0 (ранее 1.8).Я получаю плохие результаты, когда дело доходит до запроса данных (по крайней мере, я думаю, что они могли бы быть намного лучше, глядя на http://mongoid.org/performance.html). Сначала я подумал, что проблема заключается в маппере, который я использую в Ruby (Mongoid), ноЯ провел еще несколько тестов, и они, похоже, больше связаны с самой базой данных.

Я сделал простой тест, в котором я 10000 раз запрашиваю один и тот же документ по его идентификатору, сначала используя драйвер Ruby Mongo, затем Mongoid.Результаты:

              user     system      total        real
driver    7.670000   0.380000   8.050000 (  8.770334)
mongoid   9.180000   0.380000   9.560000 ( 10.384077)

Код здесь: https://gist.github.com/1303536 Машина, на которой я тестирую это Core 2 Duo P8400 2,27 ГГц с 4 ГБ ОЗУ под управлением Ubuntu 11.04.провел аналогичный тест, используя pymongo, чтобы проверить, не связана ли проблема с драйвером Ruby, но результат был лишь немного лучше (5-6 с для 10000 запросов).

Размер файла, который я получаю,67. Он имеет несколько небольших вложенных документов, но не более 100. Некоторые из встроенных документов ссылаются на документы из других коллекций по идентификатору, но AFAIR эта связь обрабатывается картографом, поэтомуэто не должно влиять на производительность.Извлечение этого документа непосредственно в базу данных с помощью explain() приводит к миллис = 0.

Странно то, что индикатор жесткого диска постоянно мигает во время тестов.Разве этот документ не должен быть кэширован в оперативной памяти Монго после первого чтения?Есть ли что-то очевидное, чего мне не хватает?Или это совсем не плохой результат (но по сравнению с http://mongoid.org/performance.html он кажется плохим)?

1 Ответ

0 голосов
/ 26 октября 2011

Я сбросил и воссоздал базу данных. Возможно, это произошло из-за перехода с 1,8 на 2,0. В любом случае светодиод жесткого диска перестал мигать, и теперь все в 2-3 раза быстрее.

Я также внимательно посмотрел на тест, который использовался для тестирования Mongoid, и этот результат (0,001 с) только для одного find (), а не для миллиона. Я сказал автору Mongoid, что, по-моему, на веб-сайте четко не указано, что количество операций относится только к некоторым из них.

Извините за путаницу.

...