2012-09-10 9 views
9

Wraz z rozwojem kodu dla mojego projektu powstają nowe indeksy i jestem pewien, że niektóre stare nie są już potrzebne. Zanim jednak porzucę je, aby zobaczyć, czy coś spowalnia, czy nie, wolałbym, jeśli istnieje bardziej programowy lub analityczny sposób określenia, czy indeks jest już używany.Dowolny łatwy sposób na sprawdzenie, czy wskaźniki mongodów są nadal używane, czy nie?

Nie widzę niczego w kolekcji system.indexes, ale najlepiej jest gdzieś mieć statystyki na temat dostępu do indeksu! Czy tak jest?

+2

nie ma bezpośredniego metryczny informacji o użyciu indeksu (jak w MongoDB 2.2.0). Istnieje kilka sugestii związanych z metrykami powiązanymi z biletem śledzenia w kolejce problemów MongoDB: [SERVER-5828] (https://jira.mongodb.org/browse/SERVER-5828). – Stennie

Odpowiedz

11

Uruchom swoje zapytania db.collection.find(...) za pomocą .explain() przypiętego na końcu. Jest to najbardziej przydatny sposób sprawdzania działania zapytań: http://www.mongodb.org/display/DOCS/Explain

Można również włączyć profilowanie, a wpisy w dzienniku profilu umożliwiają użycie indeksu dla każdego profilowanego zapytania. Na razie nie ma żadnych zagregowanych statystyk. W szczególności nie da ci indeksów, które nie są używane, tylko indeks, który jest używany (dla każdego zapytania). (Edycja: I musi być wyobrażając sobie, że - trzeba uzyskać zapytanie z profilera, a następnie uruchomić wyjaśnić na to niby bolesny ręcznie..) http://www.mongodb.org/display/DOCS/Database+Profiler

Aktualizacja: prostu zobaczyłem to od mongolab; wygląda ciekawie nowym projekcie wzdłuż tych linii: http://blog.mongolab.com/2012/06/introducing-dex-the-index-bot/

Aktualizacja: stworzyłem skrypt, aby sprawdzić, czy indeksy, które nie są wykorzystywane, przez profilera: https://github.com/wfreeman/indexalizer

+2

Dex wydaje się całkiem fajny, ale wciąż nie daje mi znać, które indeksy nie są używane. Ale to sprawdzę! Wygląda więc na to, że chciałbym przejść do profilu przez jakiś czas, a następnie sprawdzić, które indeksy nigdy się nie pojawiły. – Zugwalt

+0

Tak, profilowanie jest prawdopodobnie najlepszym rozwiązaniem. W rzeczywistości rozważałem napisanie narzędzia, które zrobi to nieco automatycznie - może powinienem to znowu przerwać. –

+1

Ok, spędziłem kilka godzin na scenariuszu ... wydaje się działać na moim dość prostym systemie. Daj mi znać, jeśli to pomoże. –

Powiązane problemy