2014-12-31 1 views
-1

나는 몽고에이 개체를 삽입하는 경우 :MongoDB에서 대형 오브젝트를 어떻게 인덱스합니까? (? 인덱스에 저장됩니다 내가 인덱스의 내용을 볼 수 있을까요?)

var object = { 
    key1 : "some big string", 
    key2 : "Another big inner object" 
}; 

_id가 자동으로 추가됩니다 :이의

var object = { 
    _id : objectId('some id'); 
    key1 : "some big string", 
    key2 : "Another big inner object" 
}; 

새로운 레코드, 그 중 어떤 부분이 (자동 또는 수동으로) 인덱싱되는지, 인덱스가 저장된 위치 (RAM 또는 디스크)는 무엇입니까? 데이터가 메모리에 저장되어있는 경우 큰 개체를 효과적으로 인덱싱하려면 어떻게해야합니까? 무엇이 색인 생성되었는지 어떻게 볼 수 있습니까?

+1

을 조금 생각하십시오 : 인덱스가 RAM에만 저장되는 경우 서버를 다시 시작할 때마다 인덱스를 다시 만들어야합니다. 색인 및 대규모 컬렉션 - 시간이 걸릴 수 있습니다. RAM에로드되고 데이터가 변경되고 디스크에 수시로 동기화되어 수정됩니다. 귀하의 다른 질문에 관해서는 : 질문을하기 전에 (색인에 관한 아주 완전한 문서를 읽으십시오.) (http://docs.mongodb.org/manual/indexes/)하면 좋을 것입니다. –

답변

0

자동으로 인덱싱되는 부분은 _id 필드입니다. 다른 모든 색인은 수동으로 색인화해야합니다.

MongoDB의 모든 것과 마찬가지로 색인은 memory-mapped files으로 처리됩니다. 즉, 가장 최근에 사용 된 인덱스가 RAM에 캐시되고 운영 체제의 재량에 따라 잠시 동안 액세스하지 않을 경우 하드 드라이브로 최대 절전 모드로 전환됩니다.

your_collection에있는 색인과 Mongo 쉘 명령 db.your_collection.stats()의 색인 크기를 확인할 수 있습니다. 어떤 인덱스가 각 인덱스에 의해 인덱싱되는지 알고 싶다면 db.your_collection.getIndexes()

관련 문제