De acordo com a documentação do MongoDB, geralmente não há necessidade de reconstruir índices rotineiramente.
OBSERVAÇÃO :Qualquer conselho sobre armazenamento se torna mais interessante com o MongoDB 3.0+, que introduziu um API do mecanismo de armazenamento conectável . Meus comentários abaixo são especificamente em referência ao mecanismo de armazenamento MMAP padrão no MongoDB 3.0 e anteriores. O WiredTiger e outros mecanismos de armazenamento têm diferentes implementações de armazenamento para dados e índices.
Pode haver algum benefício em reconstruir um índice com o mecanismo de armazenamento MMAP se:
-
Um índice está consumindo uma quantidade de espaço maior do que o esperado em comparação com os dados. Observação:você precisa monitorar os dados históricos e o tamanho do índice para ter uma linha de base para comparação.
-
Você deseja migrar de um formato de índice mais antigo para um mais recente. Se uma reindexação for aconselhável, isso será mencionado nas notas de atualização. Por exemplo, o MongoDB 2.0 introduziu melhorias significativas no desempenho do índice a> portanto, as notas da versão incluem uma reindexação sugerida para o formato v2.0 após a atualização. Da mesma forma, o MongoDB 2.6 introduziu o2dsphere
(v2.0) índices que têm um comportamento padrão diferente (esparso por padrão). Índices existentes não são reconstruídos após atualizações de versão de índice; a escolha de se/quando atualizar é deixada para o administrador do banco de dados.
-
Você alterou o_id
formato para uma coleção de ou para uma chave monotonicamente crescente (por exemplo, ObjectID) para um valor aleatório. Isso é um pouco esotérico, mas há uma otimização de índice que divide os buckets b-tree 90/10 (em vez de 50/50) se você estiver inserindo_id
s que estão sempre aumentando (ref:SERVER-983 ). Se a natureza do seu_id
s muda significativamente, pode ser possível construir uma b-tree mais eficiente com um re-index.
Para obter mais informações sobre o comportamento geral da árvore B, consulte:Wikipedia:B-tree
Visualizando o uso do índice
Se você está realmente curioso para se aprofundar um pouco mais no índice interno, existem alguns comandos/ferramentas experimentais que você pode tentar. Espero que eles sejam limitados apenas ao MongoDB 2.4 e 2.6: