2016-03-08 3 views
0

Каково обоснование наличия автоматического индекса в поле _id для закрытых коллекций по умолчанию? Мы можем найти в docs, что:Capped collections и _id auto index

Без этих накладных расходов на индексирование ограниченные коллекции могут поддерживать более высокую пропускную способность ввода.

Был post о блокированного производительности коллекции вставки и мои собственные тесты показывают также, что для вставки блокированных сбора без индекса самый быстрый вариант, то нормальный сбор идет, и самый медленный вариант ограничен коллекцию индекс. Итак, почему автоматический индекс был добавлен вместе с полями _id в версии 2.2, если он достигает производительности, тогда как ограниченные коллекции предлагаются в качестве быстрых альтернатив нормальным коллекциям в определенных сценариях?

ответ

0

Ну, мы, конечно же, не можем исключать выгоды от _id в закрытой коллекции. Это помогает вам и на самом деле требуется для тиражирования.

MongoDB включил его по умолчанию, так как развертывание MongoDB в конфигурации конфигурации реплик очень нормально, теперь дни. Вы можете найти более подробную информацию в documentation, пожалуйста, найдите autoIndexId

Я считаю, причина медленности - это индекс, а не поле _id. Поэтому, если ваши требования требуют особых потребностей, вы всегда можете отключить автоматический индекс.

Но ...

вам все еще нужно поставить поле _id с нулевым (0) значение.

например. Коллекция с ограниченным объемом 2 ГБ с отключенным автоматическим индексом.

db.createCollection("people", { capped: true, size: 2147483648, autoIndexId: false }) 

Я уверен, что этот трюк вернет скорость ввода.

+0

@ Салем, благодарю вас за ответ. autoIndexId на самом деле то, что я использовал для проверки производительности для вставок. И да, если вы отключите его, вставки будут быстрее. Но в чем причины этого? Единственное, что я вижу сейчас, это то, что для наборов реплик все коллекции должны иметь значение autoIndexId равным true. Что касается поддержания порядка вставки: для закрытой коллекции он работает и без индекса. – wombatonfire

+0

Да, он поддерживает порядок вставки, но нет гарантии. Кроме того, MongoDB (компания) нацеливается на массовую масштабируемость и конкурирует с некоторыми крупными игроками, поэтому они взвешивают его как более выгодные для более широкого использования, а не для специального использования. – Saleem

+0

Это причина, по которой они позволяют автоматически индексировать по умолчанию. Снова они позволяют нам настраивать MongoDB на основе наших потребностей в особых обстоятельствах. – Saleem