2013-05-28 3 views
0

Учитывая, 20M документы с каждым средним 550bytes и PHP драйвер на одной машине.MongoDB производительность записи

Первый Вставка (не mongoimport) с journal on, WriteConcern to default (1). Взял около 12 часов. Тогда это заставило меня задуматься, поэтому я попробовал второй импорт.

Во-вторых, я использовал batchInsert() с --nojournal and WriteConcern=0, и я принял к сведению производительность. Всего это ТОО заняло 12 часов?! Было интересно, когда начиналось 40000 records, но в это время 2500 records за считанные минуты, и я могу только представить, что это было 100 records в минуту.

Мои вопросы:

  1. Я предположил, поворачивая журнал прочь и сделать ш = 0 и использовать batchInsert() моя общая вставка должна значительно падать!
  2. Как объясняется значительное падение вложений в минуту?

--UPDATE--

Машина Core Duo 3 ГГц, 8 Гб оперативной памяти. Использование ОЗУ остается неизменным на уровне% 50 в течение всего процесса. Однако использование ЦП очень велико. В PHP у меня есть ini_set('memory_limit', -1), чтобы не ограничивать использование памяти.

+0

Какая структура коллекции? – Kostanos

ответ

0

После большого притягивания волос я понял эффект отставания. Достаточно интересно, когда я отложил документы до 5000 строк, пакетная вставка работала как магия и импортировалась чуть ниже 4 минуты !!

Этот инструмент дал мне идею: https://github.com/jsteemann/BulkInsertBenchmark

0

Если это только однократная миграция, я предлагаю вам удалить все индексы перед этими вставками. Использование метода deleteIndex(..).

После того, как все вставки закончены, используйте isureIndex(..), чтобы вернуть индексы.

PS. Из предоставленных вами номеров это не большой объем данных, возможно, вы неправильно настроили сервер MongoDB. Пожалуйста, предоставьте конфигурацию вашего сервера MongoDB и размер памяти, возможно, я смогу найти что-то еще для улучшения.

Ответ на ваш вопрос (2), возможно, ваш сервер удачи памяти после некоторых вставок.

+0

Я не добавляю никаких вторичных индексов, только _id создается mongo. Вы предлагаете удалить индекс после каждой вставки? – Zoheir

+0

Нет, это нормально, если вы уверены, что индексов больше нет, поэтому единственной проблемой, которую я вижу, является конфигурация MongoDB. Я внедрил более 4 ГБ данных на сервер mongoDB без каких-либо проблем. Проверьте пределы памяти в конфигурации mongoDB и сколько памяти на вашем сервере? – Kostanos

+0

И, пожалуйста, добавьте код, который вы используете, чтобы вставить данные. – Kostanos

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