DBAtlas · Atlas de operações de banco de dados

Encontrar índices não utilizados e ocultá-los antes de remover (hideIndex)

MongoDBDesempenho

Comando

// Usage counter per index (on this member, since the last restart):
db.musteri.aggregate([{ $indexStats: {} }, { $project: { name: 1, ops: "$accesses.ops", since: "$accesses.since" } }, { $sort: { ops: 1 } }])
// Hide it from the planner before dropping (the index keeps being maintained):
db.musteri.hideIndex("idx_email")
// Revert immediately if problems appear:
db.musteri.unhideIndex("idx_email")
// If the observation period passes without issues:
db.musteri.dropIndex("idx_email")

O que faz

$indexStats mostra quantas vezes cada índice foi usado; hideIndex oculta um índice do query planner sem removê-lo, de modo que o efeito de removê-lo pode ser testado de forma reversível.

Quando usar

Ao limpar índices desnecessários que adicionam overhead de escrita e armazenamento.

Atenção

Os contadores são por membro e zeram no restart; se as leituras vão para os secundários, verifique todos os membros e observe um período longo o suficiente (incluindo relatórios de fim de mês). Índices únicos ou TTL com ops 0 ainda podem ser necessários: a unique constraint e os deletes do TTL não aparecem no contador. Um índice oculto continua sendo mantido nas escritas, e um índice único oculto continua garantindo a constraint.

Abrir no DBAtlas →

Relacionados