확실하지 않음 앱에 ensureIndex를 넣지 않으려면 나는 보통 데이터베이스 쉘을 사용해야 할 것이라고 확신한다. 그런 다음로드 테스트 중 (또는 제품이 생산 속도가 느려지는 경우) 시력을 유지하고 쉘에서 다시 놓친 부분을 추가하십시오. ensureIndex ({a : 1}, {background : true})를 수행하여 백그라운드에서 색인을 작성할 수 있으므로 나중에 작성하는 것이 다른 db만큼 끔찍하지는 않습니다.
MongoDB에는 느린 작업을 찾을 수있는 좋은 프로파일 러가 있습니다. http://www.mongodb.org/display/DOCS/Database+Profiler.
10gen (MongoDB 's commercial counterpart)은 아직 사용하지는 않았지만 무료로 모니터링 서비스를 제공합니다 (http://www.10gen.com/mongodb-monitoring-service).
그러나 컬렉션을 만들기 전에 db.collection.ensureIndex()를 호출하면 컬렉션이 만들어지고 인덱스가 저장됩니다.
앱에서 확실히 원한다면 각 작업 전에 대신 두 번째 옵션 (DB 연결 직후에 색인을 보장)을 사용합니다. 내가했을 때 DB에 뭔가를 저장할 것이므로 부부가있을 때마다 매번 실행하지 마십시오. 여기에 PHP를 알고 있지만하지 마십시오 의사 코드 :
var test = db.systemChecks.findOne({indexes : true})
if (test == null) //item doesn't exist
{
//do all the ensureIndex() commands
db.systemChecks.insert({indexes : true})
}
것은 그냥 당신이 당신이 더 많은 인덱스 나중에 인덱스를 통해 실행해야을 발견 한 경우, systemCheck 항목을 삭제하는 것을 기억
출처
2012-11-15 23:22:46
jon