Neste post, mostraremos como encontrar índices não utilizados no MongoDB, verificar estatísticas de uso em sua coleção de índices e como descartar seus índices não utilizados.
Gerenciar ativamente os índices do banco de dados MongoDB em várias versões de aplicativos pode ser um desafio para as equipes de desenvolvimento. Os requisitos geralmente mudam a cada versão, onde vários novos índices podem ser adicionados e os índices antigos podem ser abandonados. Com o tempo, isso torna difícil acompanhar quais índices do MongoDB estão sendo usados e quais são desnecessários.
Os índices têm um grande impacto no desempenho de gravação – sempre que há uma gravação em uma coleção, os índices relevantes precisam ser atualizados. A falta de índices se manifesta imediatamente e torna a consulta mais lenta – índices não utilizados são mais sutis e precisam ser ativamente removidos para melhorar o desempenho de gravação. Mais informações podem ser encontradas aqui - Perigos de construir índices no MongoDB.
Nas versões anteriores do MongoDB, não havia uma maneira fácil de determinar se um índice não estava sendo usado. No entanto, a partir da versão 3.2, o MongoDB adicionou suporte para o operador $indexStats, que permite coletar estatísticas sobre o uso do índice.
Encontrando índices não usados no MongoDB
Para verificar as estatísticas de uso de um índice específico em uma coleção, você pode usar este comando:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
Para obter as estatísticas de todos os índices de uma coleção:
db.collection.aggregate([{$indexStats:{}}])
O documento retornado ficará assim:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Os dois campos importantes a serem observados aqui são:
-
Ops
Este é o número de operações que usaram o índice.
-
Desde
Esta é a hora a partir da qual o MongoDB coletou estatísticas e normalmente é a última hora de início.
Descartando índices não usados no MongoDB
Depois de identificar e verificar os índices do MongoDB não utilizados, você pode descartar o índice usando o código abaixo:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Como sempre, verifique se você está descartando o índice correto antes de prosseguir com a operação de descarte.
Se você tiver alguma dúvida sobre como encontrar índices não utilizados no MongoDB, deixe um comentário abaixo ou entre em contato conosco em [email protected].