MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Query mongoDB ridicolmente lenta su una piccola raccolta in un database semplice ma grande

Il avgObjSize non è in linea con la stima di 280 byte. Significa che i tuoi oggetti hanno una media di circa 5 MB e storageSize è vicino a 1 GB. Se hai un limite di memoria, l'esecuzione di una query che deve accedere a tutti i 1 GB di file causerebbe molti errori di pagina.

Hai provato a compattare ?

db.runCommand({compact: 'Aggregates'})

o riparazione ?

db.repairDatabase()

Se ciò non funziona, prova a ritirare solo i campi necessari per la somma anziché l'intero documento. È possibile che quei documenti siano effettivamente 5 MB e il tempo venga speso per trasferire i dati via cavo.

def get_total():
    start = datetime.now()
    print sum([x['daily_total_pages'] for x in c.Aggregates.find({}, {"daily_total_pages": 1})])
    end = datetime.now()
    print (end-start).seconds