MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que e quando é necessário reconstruir índices no MongoDB?


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 o 2dsphere (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: