DBAtlas · Atlas de operaciones de bases de datos

Encontrar índices no usados y ocultarlos antes de eliminarlos (hideIndex)

MongoDBRendimiento

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")

Qué hace

$indexStats muestra cuántas veces se ha usado cada índice; hideIndex oculta un índice al query planner sin eliminarlo, de modo que el efecto de quitarlo puede probarse de forma reversible.

Cuándo usarlo

Al depurar índices innecesarios que añaden sobrecarga de escritura y almacenamiento.

Precaución

Los contadores son por miembro y se reinician al reiniciar; si las lecturas van a los secundarios, revise todos los miembros y observe un periodo suficientemente largo (incluidos los informes de fin de mes). Los índices únicos o TTL con ops 0 pueden seguir siendo necesarios: la restricción de unicidad y los borrados TTL no aparecen en el contador. Un índice oculto se sigue manteniendo en las escrituras, y un índice único oculto sigue imponiendo la restricción.

Abrir en DBAtlas →

Relacionado