V tomto příspěvku vám ukážeme, jak najít nepoužívané indexy v MongoDB, zkontrolovat statistiky využití vaší sbírky indexů a jak nepoužívané indexy odstranit.
Aktivní správa indexů databáze MongoDB v několika vydáních aplikací může být pro vývojové týmy náročná. Požadavky se často mění s každým vydáním, kde může být přidáno několik nových indexů a staré indexy mohou být opuštěny. Postupem času je proto obtížné sledovat, které indexy MongoDB se používají a které jsou nyní zbytečné.
Indexy mají velký vliv na výkon zápisu – pokaždé, když dojde k zápisu do kolekce, je třeba příslušné indexy aktualizovat. Nedostatek indexů se projeví okamžitě a zpomalí dotaz – nepoužívané indexy jsou jemnější a je třeba je aktivně odstraňovat, aby se zlepšil výkon zápisu. Další informace naleznete zde – Nebezpečí vytváření indexů na MongoDB.
V dřívějších verzích MongoDB neexistoval žádný snadný způsob, jak zjistit, zda se index nepoužívá. Počínaje verzí 3.2 však MongoDB přidal podporu pro operátor $indexStats, který vám umožňuje shromažďovat statistiky o používání indexu.
Nalezení nepoužívaných indexů v MongoDB
Chcete-li zkontrolovat statistiky využití konkrétního indexu v kolekci, můžete použít tento příkaz:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
Získání statistik pro všechny indexy kolekce:
db.collection.aggregate([{$indexStats:{}}])
Vrácený dokument bude vypadat takto:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Dvě důležitá pole, která je třeba poznamenat, jsou:
-
Ops
Toto je počet operací, které použily index.
-
Od
Toto je čas, od kterého MongoDB shromažďoval statistiky, a je to obvykle čas posledního zahájení.
Odstranění nepoužívaných indexů v MongoDB
Jakmile identifikujete a ověříte nepoužívané indexy MongoDB, můžete index zrušit pomocí níže uvedeného kódu:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Jako vždy prosím ověřte, že vypouštíte správný index, než budete pokračovat v operaci zrušení.
Pokud máte nějaké dotazy ohledně hledání nepoužívaných indexů v MongoDB, zanechte komentář níže nebo nás kontaktujte na adrese [email protected].