В тази публикация ще ви покажем как да намерите неизползвани индекси в MongoDB, да проверите статистическите данни за употребата на вашата колекция от индекси и как да премахнете неизползваните си индекси.
Активното управление на индекси на база данни MongoDB в няколко версии на приложения може да бъде предизвикателство за екипите за разработка. Изискванията често се променят с всяка версия, като може да се добавят няколко нови индекса, а старите индекси да бъдат изоставени. С течение на времето това прави трудно да следите кои индекси на MongoDB се използват и кои вече са ненужни.
Индексите имат голямо влияние върху производителността на запис – всеки път, когато има запис в колекция, съответните индекси трябва да бъдат актуализирани. Липсата на индекси се проявява незабавно и забавя заявката – неизползваните индекси са по-фини и трябва да бъдат активно изрязвани, за да се подобри производителността на запис. Повече информация можете да намерите тук – Опасности от изграждането на индекси в MongoDB.
В по-ранни версии на MongoDB нямаше лесен начин да се определи дали даден индекс не се използва. Въпреки това, започвайки от версия 3.2, MongoDB добави поддръжка за оператора $indexStats, който ви позволява да събирате статистически данни за използването на вашия индекс.
Намиране на неизползвани индекси в MongoDB
За да проверите статистическите данни за употребата на конкретен индекс в колекция, можете да използвате тази команда:
db.collection.aggregate([{$indexStats: {}}, {$match: {"name": "<indexname>"}}])
За да получите статистическите данни за всички индекси на колекция:
db.collection.aggregate([{$indexStats:{}}])
Върнатият документ ще изглежда така:
{ "name" : "test", "key" : { "key" : 1 }, "host" : "xxx:27017", "accesses" : { "ops" : NumberLong(145), "since" : ISODate("2017-11-25T16:21:36.285Z") } }
Двете важни полета, които трябва да отбележите тук, са:
-
Операции
Това е броят на операциите, използвали индекса.
-
От
Това е времето, от което MongoDB събира статистика и обикновено е последният начален час.
Отпадане на неизползвани индекси в MongoDB
След като идентифицирате и проверите неизползваните индекси на MongoDB, можете да пуснете индекса, като използвате кода по-долу:
db.collection.dropIndex( "<index name>"); or db.collection.dropIndex("{key1:1.....}")
Както винаги, моля, проверете дали пускате правилния индекс, преди да продължите с операцията за премахване.
Ако имате въпроси относно намирането на неизползвани индекси в MongoDB, оставете коментар по-долу или се свържете с нас на [email protected].