Закрытые коллекции и _id автоиндекс

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

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

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

1 ответ

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

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

Я полагаю, что причиной медленности является индекс, а не само поле. Так что, если ваши требования оправдывают особые потребности, вы всегда можете отключить автоматический индекс.

Но...

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

например, сбор 2 ГБ с отключенным автоматическим индексированием.

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

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

Другие вопросы по тегам