Tôi có một truy vấn mất quá nhiều thời gian để hoàn tất. Tôi thích làm một số kiểm tra hiệu suất nhưng sau khi tôi kiểm tra một lần (mất khoảng 30 giây) truy vấn bắt đầu chạy nhanh hơn rất nhiều (< 1 giây). Tôi cho rằng nó phải có bộ nhớ đệm mongodb. Có cách nào để vô hiệu hóa bộ nhớ đệm cho mongodb hay cách khác tôi có thể kiểm tra hiệu suất?Làm cách nào để kiểm tra hiệu suất truy vấn mongodb mà không cần bộ nhớ cache
Tôi đang sử dụng mongodb được lưu trữ trong mongohq. Chương trình với Ruby on Rails 3. Dưới đây là giải thích:
{"cursor"=>"BtreeCursor start_-1", "nscanned"=>5276, "nscannedObjects"=>5276, "n"=>25, "millis"=>3264, "nYields"=>0, "nChunkSkips"=>0, "isMultiKey"=>false, "indexOnly"=>false, "indexBounds"=>{"start"=>[[{"$maxElement"=>1}, {"$minElement"=>1}]]}, "allPlans"=>[{"cursor"=>"BtreeCursor attendees_count_-1", "indexBounds"=>{"attendees_count"=>[[1.7976931348623157e+308, 1]]}}, {"cursor"=>"BtreeCursor images_count_-1", "indexBounds"=>{"images_count"=>[[1.7976931348623157e+308, 2]]}}, {"cursor"=>"BtreeCursor start_-1", "indexBounds"=>{"start"=>[[{"$maxElement"=>1}, {"$minElement"=>1}]]}}, {"cursor"=>"BtreeCursor start_-1_end_-1", "indexBounds"=>{"start"=>[[{"$maxElement"=>1}, {"$minElement"=>1}]], "end"=>[[{"$maxElement"=>1}, {"$minElement"=>1}]]}}, {"cursor"=>"BtreeCursor attendees._id_1 multi", "indexBounds"=>{"attendees._id"=>[[BSON::ObjectId('4f0b621e94bb688563000007'),BSON::ObjectId('4f0b621e94bb688563000007')], [BSON::ObjectId('4f0b647d5a8c00acde05236f'), BSON::ObjectId('4f0b647d5a8c00acde05236f')], [BSON::ObjectId('4f0b647d5a8c00acde052370'), BSON::ObjectId('4f0b647d5a8c00acde052370')], [BSON::ObjectId('4f0b647d5a8c00acde052371'), BSON::ObjectId('4f0b647d5a8c00acde052371')], [BSON::ObjectId('4f0b647d5a8c00acde052372'), BSON::ObjectId('4f0b647d5a8c00acde052372')], [BSON::ObjectId('4f0b647d5a8c00acde052373') ... (lots of Object IDs)]]}}}
Chú ý rằng tôi phải cắt bớt một số các giải thích bởi vì nó quá dài. Ở đâu có "nhiều ID đối tượng" có rất nhiều ID đối tượng (~ 400).
Cảm ơn tất cả
Tôi vẫn muốn truy vấn ban đầu của mình chạy nhanh hơn vì tôi không thể tải tất cả tài liệu vào bộ nhớ. Vì vậy, tôi đã sử dụng giải thích, và thấy rằng nó quét ~ 5000 tài liệu để lấy truy vấn và tôi nghĩ rằng 30 giây là quá nhiều cho 5000 tài liệu. Đó là lý do tại sao tôi muốn tiếp tục làm cùng một truy vấn mà không cần bộ nhớ cache vì vậy tôi không thể kiểm tra những gì là sai. – Gluz
Truy vấn có sử dụng chỉ mục không? Vui lòng thêm giải thích cho câu hỏi và tôi có thể xem kết quả. –
Đã thêm vào tin nhắn gốc. – Gluz