Menu Docs

Página inicial do DocsIniciar e gerenciar o MongoDBMongoDB Atlas

Remover índices desnecessários

Nesta página

  • Visão geral
  • Exemplo
  • Identifique e elimine índices desnecessários
  • Saiba mais

Índices oferecem suporte à execução eficiente de queries no MongoDB. No entanto, cada índice criado tem um impacto negativo no desempenho em gravações e exige algum espaço em disco.

A criação de índices desnecessários leva a uma coleção inchada e gravações lentas. Considere cada query que seu aplicativo executa e se ela justifica um índice. Remova os índices que não são usados, porque o campo não é usado para executar a query no banco de dados ou porque o índice é redundante.

Você deve identificar e eliminar índices desnecessários. Use a interface do usuário do Atlas para gerenciar índices no Atlas.

Considere um jogo que premie coins para os jogadores. Quando um jogador atinge 20 coins, esse jogador ganha 1 star e seus coins são redefinidos para 0. O jogo tem uma coleção players com documentos como os seguintes:

// players collection
{
"_id": "ObjectId(123)",
"first_name": "John",
"last_name": "Doe",
"coins": 11,
"stars": 2
}

A coleção players tem um índice para cada campo:

  • _id é indexado por padrão.

  • { last_name: 1 }

  • { last_name: 1, first_name: 1 }

  • { coins: -1 }

  • { stars: -1 }

Neste exemplo, quando o jogo consulta o banco de dados em busca de informações do jogador, ele encontra um único registro usando o nome completo de um jogador. O índice composto { last_name: 1, first_name: 1 } cobre este caso, então o jogo deve largar o índice { last_name: 1 } porque é redundante.

Neste exemplo, o campo coins nunca é usado para procurar no banco de dados. O jogo deve eliminar o índice { coins: -1 } porque ele não está sendo usado.

Neste exemplo, no final de um jogo, os nomes dos jogadores são exibidos em uma tabela de classificação em ordem decrescente por número de estrelas. O jogo deve manter o índice { stars: -1 }, mesmo que seja usado com pouca frequência, para evitar a digitalização de todos os documentos da coleção players.

Agora, o jogo usa os seguintes índices:

  • _id é indexado por padrão.

  • { last_name: 1, first_name: 1 }

  • { stars: -1 }

Após eliminar índices desnecessários, a coleção players tem mais espaço livre e pode executar gravações mais rápidas. As leituras mais frequentes não sofrem uma queda no desempenho porque os índices que suportam essas leituras ainda existem na coleção.

Para identificar índices desnecessários no Atlas, visualize índices com a interface do usuário doAtlas.

Na guia Indexes no Explorador de Dados, você pode visualizar Size, Usage e outras informações para cada um dos seus índices. Se um índice não for usado ou for coberto por outro índice, você deve descartá-lo.

Para eliminar um índice no Atlas, elimine um índice com a interface do usuário do Atlas.

  • Para saber mais sobre índices, consulte Índices.

  • Para saber mais sobre indexação para seu caso de uso, consulte Indexando Estratégias.

  • O MongoDB também oferece um curso gratuito da MongoDB University para melhorar o desempenho do banco de dados, incluindo a otimização de índices: Monitoramento e insights.

← Evite arrays ilimitadas