2013-04-04 2 views
0

저는 매우 짧은 쿼리를 사용하여 Mongo에 대해 공식 C# 드라이버 1.8을 사용하여 실행 중이며이 쿼리는 약 50 %의 시간 동안 쿼리를 수행 할 때만 반환됩니다. 나는 단위 테스트를 가지고 있는데, 쿼리를 실행하면 다른 시간에 결코 끝나지 않을 시간이 약 1 초 이내에 약 50 %의 시간을 반환합니다. 내가 쿼리를 가지고 내가 1 초 이내에 응답을 얻을 수 아래의 쿼리를 사용 MongoVue에서 실행할 때MongoDb 쿼리가 모든 시간을 반환하지 않습니다.

다음은 쿼리

var q = Database.GetCollection<Stuff>("Stuff").AsQueryable() 
    .Where(x => x.Partition == partitionName && x.PersistantId != null && (
     (x.When.DateStart > startingFrom && x.When.DateEnd == null) || 
     (x.When.DateEnd > startingFrom))); 
return q.ToList(); 

입니다.

{ "Partition" : "PartitionID:53", "PersistantId" : { "$ne" : null }, "$or" : [{ "When.DateStart" : { "$gt" : ISODate("2012-04-01T06:00:00Z") }, "When.DateEnd" : null }, { "When.DateEnd" : { "$gt" : ISODate("2012-04-01T06:00:00Z") } }] } 

1.8 드라이버 또는 MongoDB 2.4.1에서 버그가 발생한 것 같습니다. 이 컬렉션에는 약 70,000 개의 항목 만 있고 4GB의 메모리와 몇 개의 프로세서가있는 Windows에서 실행되는 mongo Server에 있습니다.

내 진단에서 볼 수있는 진단 로그가 있습니까? 아니면 내 쿼리에서 오류가 있습니까?

+0

http://docs.mongodb.org/manual/tutorial/manage-the-database-profiler/이 쿼리가 실행 중일 때 쿼리에 잘못된 것 (마무리되지 않음) 무엇이 당신을 도움이 될 것입니다 생각 . 이렇게하면 현재의 모든 프로세스/쿼리가 표시되며 실제로 실행 중인지 여부를 알 수 있습니다. –

답변

0

를 사용하여 MongoDB를 inbuild 프로파일 러는, 나는 그것이 정말 몽고 쉘 프롬프트에서 db.currentOp()를 실행 언젠가

관련 문제