Производительность MongoDB в зависимости от размера документа - PullRequest
3 голосов
/ 19 октября 2010

Я играл с драйвером samus mongodb , особенно с тестами производительности.Из результатов видно, что размер документов может оказать решающее влияние на длительность операций с этими коллекциями.Стремитесь к тому или иному количеству «настоящих» чисел, определяющих, какой размер документа будет запрашивать время?Является ли эта низкая производительность скорее следствием драйвера и каких-либо издержек сериализации?Кто-нибудь еще заметил это?

Ответы [ 3 ]

2 голосов
/ 19 октября 2010

Вы можете включить профилирование с помощью db.setProfilingLevel(2) и запросить db.system.profile для получения подробной информации о выполненных запросах.

Хотя это может немного исказить результаты теста, оно даст ваманализ времени запроса на сервере , устраняющий любое влияние, которое драйвер или сеть могут оказать на результаты.Если эти времена запроса соответствуют шаблону теста, размер документа влияет на время запроса.Если время запроса примерно одинаково, независимо от размера документа, то это издержки сериализации, на которые вы смотрите.

2 голосов
/ 20 октября 2010

Но это хороший тест?Не думай так.Чтение Производительность Mongodb в Windows .

Я думаю, что исключение, которое происходит, когда должен быть создан индекс, все еще проглатывается.Среда FindOne () возвращает 363 с «созданием» индекса и без него.

2 голосов
/ 19 октября 2010

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

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

В своем тесте вы можете нормализоватьчисла, основанные на одном и том же объеме данных (в байтах, а не в количестве документов)?

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