2012-05-16 3 views
3

내 mongodb 컬렉션에 1900 개의 데이터가있는 5700 개의 문서가 있습니다. 색인이 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

어떤 버전을 사용하고 있습니까? 오래된 색인을 사용하면 새 색인을 사용하도록 업그레이드 할 수 있습니다. BTW, _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