2012-09-10 13 views
9

Poiché il codice per il mio progetto si sta evolvendo, vengono creati nuovi indici e sono certo che alcuni vecchi non sono più necessari. Tuttavia, prima di lasciarli cadere per vedere se qualcosa rallenta o no, preferirei se ci fosse un modo più programmatico o analitico per determinare se un indice viene utilizzato ancora.Un modo semplice per sapere se gli indici mongodb sono ancora in uso o no?

non vedo nulla nella collezione system.indexes, ma idealmente non v'è alcune statistiche su indice accessi da qualche parte! È questo il caso?

+2

Non c'è una metrica diretta di informazioni sull'utilizzo dell'indice (come in MongoDB 2.2.0). Sono disponibili diversi suggerimenti relativi alle metriche collegate a un ticket di monitoraggio nella coda di emissione di MongoDB: [SERVER-5828] (https://jira.mongodb.org/browse/SERVER-5828). – Stennie

risposta

11

Eseguire le query db.collection.find(...) con .explain() attaccato alla fine. Questo è il modo più utile per vedere come le query sono in esecuzione: http://www.mongodb.org/display/DOCS/Explain

È inoltre possibile attivare il profiling e le voci del registro di profilo forniscono l'utilizzo dell'indice per ogni query profilata. Non ci sono comunque statistiche aggregate, per ora. In particolare, non ti fornirà quali indici non vengono utilizzati, ma solo l'indice che viene utilizzato (per ogni query). (Edit: mi deve essere stato immaginando che - si deve ottenere la query dal profiler e quindi eseguire spiegare su che tipo di dolorosa manualmente..) http://www.mongodb.org/display/DOCS/Database+Profiler

Update: appena visto questo da mongolab; si presenta come un nuovo ed interessante progetto in questo senso: http://blog.mongolab.com/2012/06/introducing-dex-the-index-bot/

Aggiornamento: ho creato uno script per verificare la presenza di indici che non vengono utilizzati, tramite il profiler: https://github.com/wfreeman/indexalizer

+2

Dex sembra abbastanza bello, ma ancora non mi fa sapere quali indici non vengono utilizzati. Andiamo a dare un'occhiata però! Quindi suona come il modo di andare al profilo per un po 'e poi vedere quali indici non sono mai apparsi. – Zugwalt

+0

Sì, la profilazione è probabilmente la soluzione migliore. In effetti, ho pensato di scrivere uno strumento per farlo in qualche modo automaticamente - forse dovrei romperlo di nuovo. –

+1

Ok, ho passato un paio d'ore su una sceneggiatura ... sembra che funzioni sul mio sistema abbastanza semplice. Fatemi sapere se aiuta. –

Problemi correlati