什麼是最好的方法來找到一個索引駐留在RAM或磁盤上的mongodb?如何查找索引是在RAM還是磁盤[MongoDB]?
回答
一方面,這是完全可能只有索引的某些部分是在RAM http://docs.mongodb.org/manual/applications/indexes/#indexing-right-handed
指標沒有完全融入在所有情況下RAM。如果索引字段的值隨着每個插入而增加,並且大多數查詢選擇最近添加的文檔;那麼MongoDB只需要保留在RAM中保存最新或「最右」值的索引部分。這樣可以爲讀寫操作提供有效的索引,並最大限度地減少支持索引所需的RAM數量。
另一方面,db.serverStatus()
爲您提供了所需信息的彙總。檢查http://docs.mongodb.org/manual/reference/server-status/#server-status-indexcounters:
的
indexCounters.btree.hits
值反映了指數已訪問並mongod的是能夠從內存返回指數的次數。
謝謝。我試過'db.serverStatus()。indexCounters.btree'但它顯示了一個全零的對象。 '\t { \t \t 「訪問」:0, \t \t 「命中」:0, \t \t 「未命中」:0, \t \t 「復位」:0, \t \t 「missRatio」:0 \t}' 我跑了查詢幾次,我的查詢使用索引。 explain()顯示它。 你能找到原因嗎? –
你正在運行什麼版本?該文檔指出,「在2.2及更高版本中,這些數據反映了實際的索引使用情況。」 – chx
它是2.2.0,我會更新到2.2.1並查看結果。 –
是的,有一種方法。您可以使用totalIndexSize()
或stats()
檢查索引的大小
> 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
雙方將返回集合的索引大小以字節爲單位。以上示例顯示索引大小爲1GB
。
UPDATE
要了解整個數據庫的總索引的大小,你可以使用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
}
現在你可以用本機內存比較indexSize
檢查索引是否裝入內存或不。並且您可以增加RAM大小以適應全部索引。
希望它有幫助
- 1. Hadoop FS的意圖是保留在RAM還是磁盤?
- 2. 如何查找我的進程是CPU /內存還是磁盤密集型?
- 3. 後備tempfs磁盤而不是RAM/SWAP
- 4. 索引是否佔用磁盤空間?
- 5. 如何知道磁盤是基本的還是動態的?
- 6. 如何使用Node.js創建RAM磁盤?
- 7. 檢測塊設備是本地磁盤還是可移動USB磁盤
- 8. 是基於MongoDB的磁盤嗎?
- 9. MongoDB - 在磁盤上存儲SSD和數據收集索引?
- 10. mongodb索引查找索引排序
- 11. 如何檢查foreach索引是整數還是字符串smarty?
- 12. SQL Server 2005 - 如何找出特定索引的磁盤大小
- 13. 如何查找磁盤卷的格式
- 14. Python中使用的磁盤空間,而不是RAM由沒有足夠的RAM
- 15. 是否有可能通過Imdisk獲得持久性RAM磁盤?
- 16. 如何檢查某個字段是否在mongodb中索引?
- 17. 如何檢查MongoDB是否仍在索引?
- 18. Mongodb索引是如何工作的?
- 19. NeDB是否使用該磁盤來查找查詢?
- 20. MongoDb索引/在列表中查找
- 21. Android資源 - 在磁盤上還是在ZIP中?
- 22. 確定PostgreSQL查詢是從磁盤還是從內存緩存中運行?
- 23. 當RAM用完時寫入磁盤java
- 24. 如何知道查詢是在內存數據庫還是磁盤數據庫上運行
- 25. MongoDB更新:如何檢查更新是成功還是失敗?
- 26. 在磁盤上查找ASDF系統
- 27. 關於在ram中保持加載索引的mongodb行爲是什麼?
- 28. 如何在磁盤
- 29. MongoDB關係:嵌入還是引用?
- 30. 如何查找SQL查詢類型是DML還是DDL?
檢查我更新的答案 – RameshVel