Existe alguma maneira simples de ver quais índices mongodb estão sendo usados?

1

Nós acumulamos um grande número de índices em uma das nossas coleções mongodb, e seria bom remover algumas delas, se possível. No entanto, é muito difícil saber quais índices estão em uso ativo pelo aplicativo e quais (se houver) estão agora obsoletos.

Alguém conhece alguma ferramenta / técnica para analisar quais índices estão sendo usados?

Editar: Mongo v3.0.5

    
por UpTheCreek 14.03.2016 / 22:44

3 respostas

1

Infelizmente, o MongoDB 3.0 não possui um método direto de identificar índices não utilizados.

O MongoDB 3.2 melhora isso com a introdução do $ indexStats, que mostra os acessos ao índice: link

Algumas sugestões:

  • Tente identificar quaisquer índices que possam ser prefixos uns dos outros, pois podem ser redundantes. Tenha em mente que a ordenação de índices pode ser importante

  • Como Jacob mencionou, o uso do plano de explicação pode ajudar a identificar se uma consulta está usando um índice. PlanCache.getPlansByQuery () expandirá isso, mostrando quais planos de consulta são atualmente armazenados em cache pelo banco de dados para padrões de consulta específicos: link

por 11.07.2016 / 02:07
1

Post MongoDB 3.2 você tem o $ indexStats que permite saber quais índices estão sendo usados e até que ponto. Eu montei um post sobre isso - link

    
por 14.02.2018 / 18:43
0

Você pode usar query.explain () em consultas individuais para retornar o plano de consulta para essa consulta. Você pode investigar isso mais aqui. link

Outras coisas que você pode querer analisar:

Na saída de serverStatus:

scanned
scanAndOrder

Na saída de collStats:

totalIndexSize
indexSizes

Na saída de dbStats:

dbStats.indexes
dbStats.indexSize
    
por 25.05.2016 / 17:47

Tags