Как MongoDB управляет сканированием вторичных индексов? - PullRequest
3 голосов
/ 29 сентября 2010

По умолчанию MongoDB создает индекс по ключу _id в документе. Но когда я проверяю дополнительный индекс (вторичный, как в InnoDB из MySQL?) И запрашиваю его после этого, механизм сканирует его, а затем выборочно сканирует индекс _id, чтобы получить смещения документов?

Я в замешательстве, потому что когда приходит разделение, я прав, у каждого куска есть свои индексы, и будет много случайных чтений на запрос?

1 Ответ

7 голосов
/ 30 сентября 2010

Каждый шард будет иметь свой собственный индекс (содержащий только документы в этом шарде), доступ к ним будет осуществляться параллельно (каждый шард читает свой собственный локальный индексный шард), и результаты объединяются. Это не случайное чтение, а множественное параллельное чтение индекса. С точки зрения одного шарда это выглядит как обычный индексный доступ.

Этот разделение индекса также является причиной того, что вторичные индексы не могут быть уникальными в среде разделения (не существует единого глобального индекса, который мог бы обеспечить уникальность).

...