MongoDB Производительность вставки - огромная таблица с парой индексов - PullRequest
3 голосов
/ 26 марта 2012

Я тестирую БД Mongo для использования в базе данных с огромной таблицей из примерно 30 миллиардов записей по 200 байт каждая.Я понимаю, что для такого объема необходим Sharding, поэтому я пытаюсь получить от 1 до 2 миллиардов записей на одной машине.Я достиг 1 миллиарда записей на машине с 2 процессорами / 6 ядрами в каждом и 64 ГБ оперативной памяти.Я импортировал без индексов, и скорость была в порядке (в среднем 14 тыс. Записей в секунду).Я добавил индексы, что заняло очень много времени, но это нормально, так как это разовая вещь.Теперь вставка новых записей в базу данных занимает очень много времени.Насколько я могу судить, машина не загружается при вставке записей (CPU, RAM и I / O находятся в хорошем состоянии).Как можно ускорить вставку новых записей?

1 Ответ

4 голосов
/ 26 марта 2012

Я бы порекомендовал добавить этот хост в MMS (http://mms.10gen.com/help/overview.html#installation) - убедитесь, что вы устанавливаете с поддержкой munin-node, и это даст вам больше информации. Это позволит вам отследить, что может замедлять работу. Извините, я не могу быть более конкретным в ответе, но здесь есть много-много возможных объяснений. Некоторые общие моменты:

  • Добавление индексов означает, что индексы, а также ваш рабочий набор данных теперь будут в ОЗУ, это могло бы привести к нагрузке на ваши ресурсы (ищите ошибки страницы)
  • Теперь, когда у вас есть индексы, они должны обновляться при вставке - если все вписывается в ОЗУ, все должно быть в порядке, см. Первый пункт
  • Вам также следует проверить дисковый ввод-вывод, чтобы увидеть, как он работает - как выглядит ваш средний показатель сброса фона?
  • Вы используете правильную файловую систему (XFS, ext4) и версию ядра более позднюю, чем 2.6.25? (в более ранних версиях были проблемы с fallocate ())

Хорошую общую информацию для продолжения можно найти здесь:

http://www.mongodb.org/display/DOCS/Production+Notes

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