As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Índices pouco usados e redundantes
Visão geral do
Os índices melhoram o desempenho geral das consultas das cargas de trabalho, mas têm custos. Cada índice consome armazenamento e I/O recursos, e as operações de gravação precisam atualizar todos os índices na coleção. Se seu banco de dados contiver índices não utilizados, subutilizados ou redundantes, isso resultará em sobrecarga para o cluster, levando à degradação do desempenho. Vários índices desnecessários criam um antipadrão que causa problemas de desempenho, maiores custos de armazenamento e maior sobrecarga operacional.
Cenários de indexação abaixo do ideal
-
Índices não utilizados: índices criados para consultas únicas ou em iterações anteriores do produto que não são mais acessados pelos padrões de consulta atuais. Para identificar índices não utilizados em uma coleção, você pode usar IndexStats. Para obter mais informações, consulte Como analiso o uso do índice e identifico índices não utilizados?.
-
Índices redundantes: vários índices que abrangem padrões de chave sobrepostos ou padrões de consulta idênticos. Exemplo: um índice de chave única no atributo A se torna redundante quando um índice composto abrange os atributos A e B, pois o índice composto pode lidar com consultas somente no atributo A.
-
Over-Indexing: criar índices “por precaução” sem analisar os padrões reais de consulta ou os requisitos de desempenho.
-
Índices de baixa cardinalidade: índices em campos com poucos valores distintos (por exemplo, campos booleanos, sinalizadores de status) que oferecem benefícios mínimos de otimização de consultas.
Impacto no desempenho do cluster
-
Armazenamento e E/S: cada índice consome espaço de armazenamento e recursos de E/S, contribuindo para os custos gerais. Se um índice não for usado ou for redundante, isso representará um custo desnecessário em seu cluster.
-
Desempenho de gravação reduzido: as operações de inserção, atualização e exclusão devem manter índices, criando uma sobrecarga que consome recursos. Índices não utilizados ou redundantes adicionam sobrecarga desnecessária a essas operações.
-
Pressão de memória e CPU: os índices competem pela memória do buffer pool e podem despejar dados acessados com frequência se o conjunto de trabalho não couber na memória da instância, resultando em uma memória abaixo do ideal. BufferCacheHitRatio O sistema também consome recursos da CPU mantendo as estruturas de índice.
Ferramentas disponíveis para identificar oportunidades de otimização de índices
-
Ferramenta de revisão de índice:
-
Ferramenta de detecção de cardinalidade de índice
Reunindo o kit de ferramentas:
git clone https://github.com/awslabs/amazon-documentdb-tools.git
1. Ferramenta de revisão de índice
A ferramenta de revisão de índices analisa todas as coleções e índices para fornecer uma lista de índices, seus padrões de uso e identificar índices redundantes em seu cluster Amazon DocumentDB. Execute essa ferramenta em todas as instâncias do cluster para uma análise abrangente. Para obter mais informações, consulte Index Review Tool
Uso:
cd performance/index-review/ python3 index-review.py --server-alias <server-alias> --uri <mongodb-uri>
Arquivos de saída
-
{server-alias}-collections.csv: Collection-level estatísticas -
{server-alias}-indexes.csv: métricas detalhadas de uso do índice -
{server-alias}-{timestamp}-index-review.json: Dados brutos para análise posterior
nota
Execute para cada instância no cluster com um alias independente para gerar estatísticas de cada instância e, em seguida, execute a ferramenta para obter uma análise cumulativa
Por exemplo: python3 index-review.py --files "{server-alias}-{timestamp}-index-review.json, {server-alias}-{timestamp}-index-review.json" --server-alias full-review
2. Ferramenta de detecção de cardinalidade de índice
Essa ferramenta identifica índices com baixa cardinalidade que são ineficientes para o desempenho da consulta.
Uso
cd performance/index-cardinality-detection/ python3 detect-cardinality.py --uri <mongodb-uri>
Parâmetros
-
--threshold: Porcentagem do limite de cardinalidade (padrão: 1%) -
--sample-count: Número de documentos a serem amostrados (padrão: 100.000) -
--max-collections: máximo de coleções a serem examinadas por banco de dados (padrão: 100)
Para obter mais informações, consulte https://aws.amazon.com/blogs/database/detect-and-fix-low-cardinality-indexes-in-amazon-documentdb/
Estratégias de remediação
1. Remoção de índice não utilizado e redundante
// Example: Drop unused index db.collection.dropIndex("unused_index_name")
nota
Os índices nunca devem ser descartados sem discutir com todas as partes interessadas e testar o desempenho.
2. Otimização do baixo índice de cardinalidade
-
Use índices parciais com filtros
-
Converta índices únicos de baixa cardinalidade em índices compostos