Remover índices desnecessários
- A autenticação OAuth 2.0 para acesso programático ao Cloud Manager está disponível como um recurso de visualização.
- O recurso e a documentação correspondente podem mudar a qualquer momento durante o período de Pré-visualização. Para usar a 2.0 autenticação OAuth, crie uma conta de serviço para usar em suas solicitações para a API pública do Cloud Manager .
Visão geral
Í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 o Data Explorer para gerenciar índices no Cloud Manager.
Exemplo
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 }
last_name
Index
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.
coins
Index
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.
stars
Index
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.
Identifique e elimine índices desnecessários
Para identificar índices desnecessários no Cloud Manager, visualize índices com a chave de criptografia de dados (DEK).
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 Cloud Manager, acesse Eliminar um índice com a chave de criptografia de dados (DEK).
Saiba mais
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.