MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Lächerlich langsame MongoDB-Abfrage bei einer kleinen Sammlung in einer einfachen, aber großen Datenbank

Die avgObjSize nicht mit der 280-Byte-Schätzung übereinstimmt. Es besagt, dass Ihre Objekte im Durchschnitt etwa 5 MB groß und storageSize sind ist in der Nähe von 1 GB. Wenn Ihr Arbeitsspeicher begrenzt ist, würde das Ausführen einer Abfrage, die auf alle 1 GB der Datei zugreifen muss, viele Seitenfehler verursachen.

Haben Sie versucht, zu komprimieren ?

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

oder reparieren ?

db.repairDatabase()

Wenn das nicht funktioniert, versuchen Sie, nur die Felder zurückzuziehen, die für die Summe benötigt werden, anstatt das gesamte Dokument zu ziehen. Es kann sein, dass diese Dokumente tatsächlich 5 MB groß sind und die Zeit damit verbracht wird, Daten über die Leitung zu ziehen.

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