Qual è il modo migliore per scoprire se un indice risiede nella RAM o nel disco in mongodb?Come scoprire se l'indice si trova nella RAM o nel Disco [MongoDB]?
risposta
Da una parte, è del tutto possibile solo alcune parti del indice è nella RAM http://docs.mongodb.org/manual/applications/indexes/#indexing-right-handed
rilevamenti non deve entrare interamente nella RAM in tutti i casi. Se il valore del campo indicizzato cresce con ogni inserto e la maggior parte delle query seleziona i documenti aggiunti di recente; quindi MongoDB ha solo bisogno di mantenere le parti dell'indice che contengono i valori più recenti o "più a destra" nella RAM. Ciò consente un uso efficiente dell'indice per operazioni di lettura e scrittura e riduce al minimo la quantità di RAM necessaria per supportare l'indice.
D'altra parte, db.serverStatus()
fornisce un insieme delle informazioni desiderate. Controllare http://docs.mongodb.org/manual/reference/server-status/#server-status-indexcounters:
Il valore
indexCounters.btree.hits
riflette il numero di volte che un indice è stata letta e mongod è in grado di restituire l'indice dalla memoria.
Grazie. Ho provato 'db.serverStatus(). IndexCounters.btree' Ma mostra un oggetto con tutti gli zeri. '\t { \t \t "accessi": 0, \t \t "hits": 0, \t \t "manca": 0, \t \t "azzera": 0, \t \t "missRatio": 0 \t} ' Ho eseguito query poche volte e la mia query utilizza un indice. explain() lo mostra. Riesci a trovare perché? –
Quale versione stai utilizzando? I documenti indicano che "In 2.2 e versioni successive, questi dati riflettono l'uso effettivo dell'indice". – chx
È 2.2.0, aggiornerò alla 2.2.1 e vedremo i risultati. –
Sì, c'è un modo. È possibile utilizzare totalIndexSize()
o stats()
per verificare le dimensioni dell'indice
> db.collection.totalIndexSize()
> 1073741824
> db.collection.stats()
> {
"ns" : "collection.test",
"count" : 100006,
"size" : 72104,
"avgObjSize" : 4506.5,
"storageSize" : 688128,
"numExtents" : 3,
"nindexes" : 1,
"lastExtentSize" : 524288,
"paddingFactor" : 1.0170000000000319,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 1073741824,
"indexSizes" : {
"_id_" : 1073741824
},
"ok" : 1
Sia restituirà la dimensione dell'indice della collezione in byte. Sopra l'esempio mostra la dimensione dell'indice è 1GB
.
UPDATE
Per trovare la dimensione totale dell'indice di tutto il database, è possibile utilizzare stats()
> db.stats()
{
"db" : "test",
"collections" : 10,
"objects" : 5909990,
"avgObjSize" : 2888.31186440677965,
"dataSize" : 17,
"storageSize" : 14745603499,
"numExtents" : 17,
"indexes" : 8,
"indexSize" : 1073741824,
"fileSize" : 50331648,
"nsSizeMB" : 163453,
"ok" : 1
}
Ora è possibile confrontare indexSize
con la macchina RAM per verificare se l'indice si inserisce in memoria o no. E puoi aumentare la dimensione della RAM per adattarla all'indice completo.
Spero che sia utile
- 1. Come posso creare un disco RAM programmaticamente?
- 2. Che cosa significa montare "working set" nella RAM per MongoDB?
- 3. Rapporto MongoDB/rapporto RAM
- 4. Archivia i file su disco o MongoDB
- 5. Come determinare se l'aereo si trova nella fotocamera Three.js Frustum
- 6. disco RAM write-through o ingombranti caching del file system?
- 7. API disco RAM programmabile per .NET?
- 8. Dove si trova Xcode sul disco rigido?
- 9. come verificare se un host si trova nel tuo server_host_01
- 10. Trova post più vecchio/più recente nella collezione mongodb
- 11. Il dattiloscritto non viene compilato se si trova nella sottocartella?
- 12. Come scoprire se un determinato Point3D si trova all'interno dei limiti della vista della telecamera?
- 13. Come scoprire dove si trova la directory di Python include?
- 14. Git: come scoprire su quale tag del ramo si trova?
- 15. Come sapere se un puntatore si trova nella memoria fisica o provocherà un errore di pagina?
- 16. Controllare se il file si trova nella (sotto) directory
- 17. MongoDB - Memorizza i file nel DB o nella memoria esterna?
- 18. Android Come si ottiene la memoria RAM totale nel dispositivo?
- 19. Determinare se una coordinata si trova nel raggio di un'altra
- 20. C - Esecuzione di un programma nella RAM
- 21. Scoprire in quale numero di linea si trova un elemento nella dom in Javascript?
- 22. Coda FIFO (o stack) implementata su disco, non ram (preferibilmente in C++)
- 23. come scoprire se esiste o meno un attributo in XSL
- 24. Come si trova la quantità di spazio su disco rimasto in Cocoa?
- 25. Linux - Trova se il processo è pronto o in esecuzione
- 26. MongoDb: evitare spazio su disco eccessivo
- 27. Come scoprire se lo stack di una macchina cresce o si riduce in memoria? (JAVA)
- 28. Spring conserva i contenuti in memoria o archivia nel disco?
- 29. Trova se un array è una sequenza nel tempo O (n) e nello spazio O (1)
- 30. Come scoprire se una stringa di Scala è analizzabile come doppia o no?
controllare la mia risposta aggiornata – RameshVel