Come trovare le statistiche dell'indice MongoDB


8

Esiste un modo per capire quali sono tutti gli indici memorizzati nella cache nella RAM? Voglio sapere le statistiche relative alla pagina per i singoli indici (numero di risultati positivi e negativi)

Risposte:


9

È possibile ottenere informazioni sui risultati generali (a livello di istanza) dal db.serverStatus()comando, in particolare:

http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.hits http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.misses

Questi numeri sono totali visti per tutta la durata del processo, quindi se vuoi ottenere un tasso o vedere l'andamento nel tempo, dovrai registrarli periodicamente e diffondere i valori di conseguenza. Per fortuna, se installi MMS Monitoring , lo farà per te e rappresenterà graficamente i risultati.

Tuttavia, al momento non sono disponibili statistiche per indice. La richiesta di funzionalità pertinente può essere trovata qui per scopi di monitoraggio e voto:

https://jira.mongodb.org/browse/SERVER-2227

Aggiornamento: gennaio 2016

Le statistiche di cui sopra sono state rimosse dall'output del comando status server, quindi non sono più disponibili. Tuttavia, la richiesta di funzionalità di riferimento è ora completa ed è disponibile nella versione 3.2 sotto forma di $indexStatsoperatore di aggregazione (i documenti collegati contengono anche output di esempio). Per completezza, ecco un esempio che ho messo insieme:

Prima di qualsiasi domanda ho solo 2 indici, il valore predefinito _ide indexme, entrambi con 0 operazioni:

> db.foo.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}

Quindi esegui un paio di rilevamenti per eseguire l'operazione indexmee controllare di nuovo:

> db.timecheck.find({indexme: 33})
> db.timecheck.find({indexme: 55})

> db.timecheck.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(2),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}

dalla documentazione: "Modificato nella versione 3.0: l'output dello stato del server non include più le sezioni workingSet, indexCounters e recordStats." Altre idee?
serv-inc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.