Ho una query che impiega troppo tempo per terminare. Mi piace fare alcuni test delle prestazioni, ma dopo aver controllato per una volta (che richiede attualmente ~ 30 secondi) la query inizia a correre molto più veloce (< 1 secondo). Suppongo che deve essere con il caching mongodb. C'è un modo per disabilitare la cache per mongodb o un altro modo per controllare le prestazioni?Come posso verificare le prestazioni della query mongodb senza cache
Sto usando mongodb ospitato in mongohq. Programma con Ruby on Rails 3. Ecco l'spiegare:
{"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)]]}}}
Si noti che ho dovuto troncare alcuni dei spiegare perché era troppo lunga. Dove ci sono "molti ID oggetto" c'erano molti ID oggetto (~ 400).
Grazie a tutti
voglio ancora la mia domanda iniziale per correre più veloce perché non riesco a caricare tutti i documenti in memoria. Quindi, ho già spiegato e ho visto che esegue la scansione di 5000 documenti per recuperare la query e penso che 30 secondi siano troppo per 5000 documenti. Questo è il motivo per cui voglio continuare a fare la stessa query senza cache, quindi non posso testare cosa non va. – Gluz
La query utilizzava un indice? Sentiti libero di aggiungere la spiegazione alla domanda e posso dare un'occhiata all'output. –
Aggiunto nel messaggio originale. – Gluz