2012-05-16 70 views
3

我在我的mongodb集合中有57M文檔,這是19G的數據。 我的索引佔用了10G。這聽起來很正常嗎?或者我可以做一些非常錯誤的事情!我的主要關鍵是2G。爲什麼我的mongodb索引如此之大

{ 
     "ns" : "myDatabase.logs", 
     "count" : 56795183, 
     "size" : 19995518140, 
     "avgObjSize" : 352.0636272974065, 
     "storageSize" : 21217578928, 
     "numExtents" : 39, 
     "nindexes" : 4, 
     "lastExtentSize" : 2146426864, 
     "paddingFactor" : 1, 
     "flags" : 1, 
     "totalIndexSize" : 10753999088, 
     "indexSizes" : { 
      "_id_" : 2330814080, 
      "type_1_playerId_1" : 2999537296, 
      "type_1_time_-1" : 2344582464, 
      "type_1_tableId_1" : 3079065248 
     }, 
     "ok" : 1 
    } 
+0

您正在使用哪個版本?如果舊的,你可以升級使用新的索引,它們更小。順便說一句,如果_id上的索引是2G,取決於您的字段中的數據,但對於兩個字段的索引,它似乎沒問題。 – AlphaB

+0

@AurelienB,版本是2.0.3 – jdh

+0

這是最近的一個。除非基地來自舊的基地,否則應該沒問題。 – AlphaB

回答

4

索引大小由索引文檔的數量以及鍵的大小(複合鍵存儲更多信息並且將更大)確定。在這種情況下,_id索引除以文檔數量爲40個字節,這似乎比較合理。

如果您運行db.collection.getIndexes(),您可以找到索引版本。如果{v:0},索引是在mongo 2.0之前創建的,那麼您應該升級到{v:1}。此過程記錄在此處:http://www.mongodb.org/display/DOCS/Index+Versions

相關問題