Mongodb - Создание индекса по умолчанию - Фоновая конструкция
Я сейчас пользуюсь 3.2.1 mongo driver version
,
Вариант использования -
Запись - Массовая вставка в коллекцию или для каждой строки.Читать - Читать на основе _id
,
Никаких дополнительных индексов не требуется, достаточно индекса по умолчанию, который mongodb создает для поля _id.
Проблема - моя служба Mongo (вызывающая mongodb) слишком сильно загружает процессор.
1.) Создает ли Mongodb индексы для поля _id в фоновом режиме.
2.) Если нет, мне нужно создать индекс в фоновом режиме, чтобы ускорить процесс. Как я могу сделать это программно.
Может быть, что-то вроде этого,
collection.createIndex(new BasicDBObject("_id", 1),new BasicDBObject("background", true));
Я наткнулся на эту ссылку
2 ответа
Запуск индекса в фоновом режиме не ускоряет вставку, а наоборот - медленнее. Однако запрос будет асинхронным, что позволит вашему приложению выполнять другие запросы за это время.
Вы можете попробовать следующие подходы, чтобы улучшить производительность при массовых вставках
- Создайте реплику, которая позволяет читать на вторичных узлах. Это будет иметь вставки, работающие на первичном узле, в то время как чтения будут направлены на вторичный. В этом случае поможет индексирование в фоновом режиме. В этом случае важно избегать чтения устаревших данных.
- Создайте новый индекс, который хорошо работает с формой данных, которые вы вставляете.
- Создайте несколько индексов, используя различные ключи в коллекции.
- Запустите запрос вставки для небольшого набора данных. Mongo проанализирует все индексы, доступные в коллекции, и выберет тот, который лучше всего подходит для формы данных, которые вы вставляете.
- Запустите db..explain("executeStats") в запросе, чтобы выяснить, какой из индексов используется.
- Удалите все остальные индексы, так как они повлияют на производительность ваших вставок.
- Запустите полный запрос и посмотрите, как он работает, используя новый индекс.
Если вы используете Spring Data MongoDB, вы можете использовать методы построителя в классе Index() для установки свойства фона:
new Index(CREATED_DATE_FIELD_NAME, Sort.Direction.DESC).background();
Если вы используете Java API, вот ссылка для правильного использования:
http://api.mongodb.org/java/3.0/com/mongodb/client/model/IndexOptions.html
По сути, вам нужно правильно предоставить параметр фона, используя IndexOptions api.