저는 MongoDB 2.0.3 (Mongoid를 통해)을 루비 (1.9.3) 응용 프로그램과 함께 사용하고 있습니다.Mongodb가 색인을 사용하지 않고 쿼리합니다.
나는 보이는 복합 인덱스가 같은 :
index [
[:attr1, Mongo::ASCENDING],
[:attr2, Mongo::ASCENDING],
[:attr3, Mongo::ASCENDING],
[:attr4, Mongo::ASCENDING]
]
그리고처럼 보이는 쿼리
이Model.where(:attr3.ne => true, :attr4.ne => true).
extras(:hint => { :attr1 => Mongo::ASCENDING,
:attr2 => Mongo::ASCENDING,
:attr3 => Mongo::ASCENDING,
:attr4 => Mongo::ASCENDING })
그리고 내 코드는 결과를 수정하고 업데이트합니다. 위의 루비 응용 프로그램을 실행하는 프로세스가 여러 개 있습니다. 모두 mongodb 서버를 저장합니다. 나는 꽤 큰 DB (30mil 레코드, 95gb 크기 이상)를 가지고 있으며 내 앱이 지속적으로 읽고 쓰고있다.
때로는 쿼리가 인덱스를 사용하고 때로는 (mongo 쉘의 db.currentOp()를 통해) 인덱스를 사용하지 않는 문제가 있습니다. 왜 그런 일이 일어나고 어떻게 해결할 수 있습니까?
설명 해 주셔서 감사합니다. – gylaz